2

我是 R 新手,但我需要将数据从 data.table 导出到 CSV,但是我需要添加页眉和页脚行并在此过程中转换数据。

我走的路线是通过水槽和猫。这允许我生成页眉和页脚行并通过 a_ply 将 30000+ 行 data.table 转储到 CSV。

sink(filelocation)
cat("\"EX1\",1,\"EX2\",",time,sep="") #header
cat("\n")
a_ply(datatable1, 1, function(x){
cat("\"L1\",")
cat(paste(x, collapse=","))
cat("\n")
}) 
cat("\"EX3\",",EX4, sep="") #footer
sink()

我已经完美地完成了所有这些工作,但是我正在努力解决的部分是我需要转换数据表中保存的数据。需要将数据表中的某些列导出为“值”,而将其他列保留为值。还需要删除 NA 值,将它们保留为“”,或者简单地保留为空 ,,。

例如

这条线

SystemID    UserID      Age Active  Status  LastAccess  LastAccessTime  Count
1234567     852741      39  Y       1       NA          NA             12

目前出口为

1234567,852741,39,Y,1,NA,NA,12

虽然我需要将其导出为

1234567,"852741",39,"Y",1,,"",12

我需要导出的 data.tables 有 30000+ 长,所以想知道是否有更好的方法来解决这个问题,或者如何构建代码以动态转换每一行,然后将该行放到文件中并移动到下一行。

我无法更改这些文件进入的系统,所以不幸的是我必须处理数据文件的刚性性质。

4

1 回答 1

3

如果我理解正确,我认为函数 write.table() 可以满足您的所有需求。

与其在编写数据时“转换”数据,不如直接修改数据框,直到它具有您想要的格式?例如,要将 UserID 列写为字符串,只需在写入表之前将该列转换为字符串,例如

myData$UserID<-as.character(myData$UserID)

一旦数据框的格式正确,它应该像

write.table(myData,outFilePath,sep=",",na="",row.names=FALSE)

注意 na="" 参数,它告诉它如何格式化 NA 值。对于页脚行,您可以单独处理,并使用“append=TRUE”参数。

于 2013-06-13T14:55:18.883 回答