我有以下示例数据集:
> dput(head(df, 8))
structure(list(data.founded_at = c("01.06.2012", "26.10.2012",
"01.04.2011", "01.01.2012", "10.10.2011", "01.01.2007", "01.01.2010",
"01.01.2011"), data.category_list = c("Entertainment", "Publishing",
"Electronics", "Software", "Software", "Curated Web", "Software",
"Analytics")), .Names = c("data.founded_at", "data.category_list"
), row.names = c(NA, 8L), class = "data.frame")
我想删除某个日期之前的所有数据。我试过这样做:
df[ df$data.founded_at < "1.1.2012", ]
但是,我收到了整个数据集。在我的数据框架上使用str()
会让我回头:
> str(df)
'data.frame': 33056 obs. of 2 variables:
$ data.founded_at : chr "01.06.2012" "26.10.2012" "01.04.2011" "01.01.2012" ...
$ data.category_list: chr "Entertainment" "Publishing" "Electronics" "Software" ...
我认为问题可能是我的约会是一个字符串。
将data.founded_at
转换为Date
只会在该列中显示NA
个值:
df$data.founded_at <- as.Date(as.character(df$data.founded_at),format="%d%m%Y")
任何想法如何解决这个案子?
感谢您的回答!
答案 0 :(得分:3)
您的格式字符串需要句点。并且,在不平等中使用as.Date。
df$data.founded_at <- as.Date(as.character(df$data.founded_at),format="%d.%m.%Y")
df[ df$data.founded_at < as.Date("2012-01-01"), ]
答案 1 :(得分:2)
以下可能有用。
df$data.founded_at <- strptime(df$data.founded_at, format="%d.%m.%Y", tz="GMT")
df[!df$data.founded_at < as.POSIXlt("2012-01-01"), ]
data.founded_at data.category_list
1 2012-06-01 Entertainment
2 2012-10-26 Publishing
4 2012-01-01 Software