我已将CSV导入R中,其中包含两列:发现日期和链接数,目的是创建一个折线图,显示为网站构建的链接数。我的CSV看起来像这样:
Date| No.of.Links.Found|
1| 2011-09-12| 2|
2| 2011-10-03| 1|
3| 2011-10-10| 1|
4| 2011-10-12| 2|
5| 2011-10-14| 2|
6| 2011-10-15| 3|
(不确定那些奇怪的字符是什么,但它们也出现在R中。)
但是,在导入CSV时,日期列被格式化为因子。当我尝试
Links_Over_Time$Date<-as.Date(Links_Over_Time$Date,format = "%y/%m/%d")
所有日期值都替换为&#39; N / A&#39;。
Date No.of.Links.Found
1 <NA> 2
2 <NA> 1
3 <NA> 1
4 <NA> 2
5 <NA> 2
6 <NA> 3
我也尝试过:
Links_Over_Time$Date<-as.POSIXct(as.character(Links_Over_Time$Date), format = "%y/%m/%d")
同样的事情发生了。我也试过
library(lubridate)
Links_Over_Time$Date<-ymd(Links_Over_Time$Date)
但是我得到了#34;所有格式都无法解析。找不到格式。&#34;警告信息。
此CSV是Microsoft SQL Server Management Studio的导出。
答案 0 :(得分:0)
Links_Over_Time <- read.csv('filepath/filename', stringsAsFactors = FALSE)
答案 1 :(得分:0)
你应该使用“ - ”而不是斜杠(“/”):
options(stringsAsFactors=F)
Links_Over_Time$Date<-as.Date(Links_Over_Time$Date,format = "%Y-%m-%d")
我已经将你的数据导入我的r控制台并尝试了上面的命令,除了第一条记录之外我得到了正确的结果,所以我使用第一行的下面命令从数据中删除了垃圾:
使用Encoding(df$column_name)
并将其设置为“UTF-8”,如下所示。这里column_name是发出垃圾数据的列。
library(stringr)
Encoding(df$bcol) <- "UTF-8"
df$bcol1 <- str_replace(df$bcol,"(.*)(?=\\d{4}-\\d{2}-\\d{1,2})","")
df$dt <- as.Date(df$bcol1,format="%Y-%m-%d")
下面是输出(为简单起见,我将列命名为acol,bcol和ccol), dt是您清理日期数据所在的最后一列:
> df$dt <- as.Date(df$bcol1,format="%Y-%m-%d")
> df
acol bcol ccol dt
1 1 <U+0095><c8><c0>2011-09-12 2 2011-09-12
2 2 2011-10-03 1 2011-10-03
3 3 2011-10-10 1 2011-10-10
4 4 2011-10-12 2 2011-10-12
5 5 2011-10-14 2 2011-10-14
6 6 2011-10-15 3 2011-10-15
bcol1
1 2011-09-12
2 2011-10-03
3 2011-10-10
4 2011-10-12
5 2011-10-14
6 2011-10-15