如何在不取消引用其他数据的情况下取消引用标题?
Posted
技术标签:
【中文标题】如何在不取消引用其他数据的情况下取消引用标题?【英文标题】:How to unquote header without unquote other data? 【发布时间】:2017-03-29 18:47:34 【问题描述】:我的数据如下所示:
Scenario,ScenName,Step,Date,GBP_fx,EUR_fx
0,"assets",0,"30/09/2016",1,0.865126741
这是一个包含 100k 观测值的巨大文件。我在 R 中读取它并将其修剪为 10k,然后将其写入 csv。但是,我找不到如何在不丢失数据中引号的情况下仅取消引用标题。如果我保留quote = TRUE
,这就是最终数据的样子,但我想去掉标题中的引号。
"Scenario","ScenName","Step","Date","GBP_fx","EUR_fx"
0,"assets",0,"30/09/2016",1,0.865126741
有什么建议吗?
【问题讨论】:
正如this post 所指出的,您可以按列控制引号,但我不确定是否有办法控制标题。 您可以尝试读取数据文件的第一行,即带引号的列名。然后用空格替换引号,并使用不带引号的列名作为文件的新列名。 【参考方案1】:您可以编写标题然后附加行,例如:
# input sample
testDF <- read.csv(text=
'Scenario,ScenName,Step,Date,GBP_fx,EUR_fx
0,"assets",0,"30/09/2016",1,0.865126741')
# custom write.csv function
write.csv.noheaderquote <- function(x,file)
# write header
write.table(head(x,0),file=file,sep=',',quote=FALSE,row.names = FALSE)
# append the rest of the rows
write.table(x,file=file,sep=',',row.names=FALSE,append=TRUE,col.names=FALSE)
# use the new function to write your csv
write.csv.noheaderquote(testDF,"destfile.csv")
结果destfile.csv
:
Scenario,ScenName,Step,Date,GBP_fx,EUR_fx
0,"assets",0,"30/09/2016",1,0.865126741
【讨论】:
谢谢!我会试一试的!【参考方案2】:我不确定一切都是必要的,但如果您的输入保存在 csv "mycsv.csv" 中,并且您可以包括 stringr
library(stringr)
df = read.table("mycsv.csv", sep = ",", quote = "", header = TRUE)
colnames(df) = str_replace( str_replace(colnames(df), "X.", ""), "\\.", "" )
【讨论】:
【参考方案3】:看起来参数引用本身会做到这一点。使用quote=""
:
testDF <- read.csv(text=
'Scenario,ScenName,Step,Date,GBP_fx,EUR_fx
0,"assets",0,"30/09/2016",1,0.865126741', quote="")
一个得到:
> testDF
Scenario ScenName Step Date GBP_fx EUR_fx
1 0 "assets" 0 "30/09/2016" 1 0.8651267
【讨论】:
以上是关于如何在不取消引用其他数据的情况下取消引用标题?的主要内容,如果未能解决你的问题,请参考以下文章