使用read.csv导入Quicken for Mac CSV导出文件以在R中创建数据框:
> str(datQ)
'data.frame': 443 obs. of 4 variables:
$ V2: chr "IBM" "IBM" "IBM" "IBM" ...
$ V6: chr "1" "1" "4" "1" ...
$ V7: chr "184.42" "187.04" "660.56" "178.44" ...
$ V1: chr "7/10/2009" "7/13/2009" "7/30/2009" "8/18/2009" ...
像这样运行as.Date会返回NA的向量。
> as.Date(datQ$V1, format = "%m/%d/%Y")
[1] NA NA NA ...
手动创建的DF工作,因此错误特定于datQ df:
> df <- data.frame(date = "7/10/2009")
> as.Date(df$date, format= "%m/%d/%Y")
[1] "2009-07-10"
我也玩过locale,就像这样:
> Sys.setlocale("LC_TIME")
[1] "en_US.UTF-8"
> as.Date(datQ$V1, format = "%m/%d/%Y")
[1] NA NA NA...
所以问题是,为什么导入的CSV数据会失败?我已经对datQ数据帧进行了修剪,以清理前导/尾随空格等。
有什么想法吗?
编辑:每个请求添加更多有关有问题的datQ df ...
的数据> dput(head(datQ))
structure(list(V2 = c("IBM", "IBM", "IBM", "IBM", "IBM",
"IBM"), V6 = c("10", "10", "40", "10", "1", "1"), V7 = c("184.42",
"187.04", "660.56", "178.44", "221.40", "218.41"), V1 = c("7/10/2009",
"7/13/2009", "7/30/2009", "8/18/2009", "9/22/2008",
"9/23/2008")), row.names = c("6", "7", "8", "9", "11", "12"
), class = "data.frame")
编辑编辑:所以评论者能够得到as.Date在我的dput输出上工作。我看了一下head(datQ),然后将屏幕输出复制到控制台。在日期值之前,RStudio显示一个PINK框,其中包含一个句点。有没有人见过这样的东西?
答案 0 :(得分:1)
在@MarcusNunes的帮助下,我发现在Quicken for Mac CSV导出文件的日期值的前面有一个不可打印的,不可见的非UTF8字符。对数据进行了修剪并没有删除这个垃圾字符。将数据从RStudio复制并粘贴回RStudio控制台,向我展示了一个奇怪的粉红色方框,在日期之前有一段时间。这让我觉得这样的事情可能会导致问题。对我的样品DF做同样的事情并没有显示粉红色的盒子。请参阅此URL以获取参考代码的位置:
https://rpubs.com/Mentors_Ubiqum/Clean_Text
此代码适用于我的机器:
> as.Date(datQ[1, 4], format = "%m/%d/%Y")
[1] NA
> as.Date(gsub("[^[:alnum:][:blank:]?&/\\-]", "", datQ[1, 4]), format = "%m/%d/%Y")
[1] "2009-07-10"