删除具有特定日期的所有内容

时间:2014-08-14 06:22:58

标签: r statistics

我有以下示例数据集:

> 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")

任何想法如何解决这个案子?

感谢您的回答!

2 个答案:

答案 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