【发布时间】:2014-05-20 08:46:03
【问题描述】:
我有一个 .csv 文件,其中包含 00xxxx 形式的帐号代码,我需要它们保持这种状态,以便与使用这种格式帐号代码的其他程序一起使用。我只是在编写一个 R 脚本来核对周五的帐户费用,并且 发誓 as.is = T 正在为我工作。现在看来,不是。以下是一些示例数据:
test <- data.frame(col1 = c("apple", "banana", "carrot"),
col2 = c(100, 200, 300),
col3 = c("00234", "00345", "00456"))
我的write.table 策略:
write.table(test, file = "C:/path/test.csv", quote = T,
sep=",", row.names = F)
删除旧的data.frame 并重新阅读:
rm(test)
test <- read.csv("C:/path/test.csv")
test
col1 col2 col3
1 apple 100 234
2 banana 200 345
3 carrot 300 456
如果不清楚,它应该看起来像我们创建的原始data.frame:
test
col1 col2 col3
1 apple 100 00234
2 banana 200 00345
3 carrot 300 00456
在仔细阅读可用的read.table 选项后,我还尝试了以下方法,结果与上述相同:
test <- read.csv("C:/path/test.csv", quote = '"')
test <- read.csv("C:/path/test.csv", as.is = T)
test <- read.csv("C:/path/test.csv", as.is = T, quote = '"')
StringsAsFactors 在这种情况下似乎不相关(听起来as.is 会做同样的事情。
当我在 Emacs 中打开文件时,col3 确实被引号包围,所以我希望它被视为文本而不是转换为数字:
大多数其他问题只是关于不处理因素之类的事情,或者让数字不被识别为字符,通常是该列中忽略字符串的结果。
我知道我可以从this one 之类的问题中寻求colClasses 的论点,但我不想这样做;我的“colClasses”内置在数据中:) 引用 = 字符,不引用 = 数字。
【问题讨论】:
标签: r csv formatting