如何在不取消引用其他数据的情况下取消引用标题?

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

【讨论】:

以上是关于如何在不取消引用其他数据的情况下取消引用标题?的主要内容,如果未能解决你的问题,请参考以下文章

取消引用数组指针

如何在不取消选择注释的情况下更新标注视图?

Linux/Bash:如何取消引用?

如何在不引用其他单元格的情况下将报表从 Reporting Services 2005 导出到 Excel?

如何在不删除内容的情况下取消暂存大量文件

如何在不增加行的情况下取消列出 R 和 inner_join 中的对象?