使用日期在R中创建子集

时间:2014-05-22 14:08:08

标签: r dataset

我是R的新手,我需要一些帮助来完成一些事情。 首先,我必须在下面的表格中分析一个包含2列的766K行的巨大数据集:

G40 2003-04-09
Z11 1997-08-15
K60 2006-03-16
I10 2000-11-30

数据集的名称为Rdiagnoses,默认情况下Col1 is V1Col2 is V2没有标题。第一列是诊断,第二列是诊断的日期。 首先,我考虑分别为每年创建一个子集。我尝试这样做的方式是这样,但它给了我一个错误。

diagnoses2009 <- as.Date( as.character(Rdiagnoses$V2), "%d-%m-%y")

Rdiagnoses_2009 <- subset(Rdiagnoses, V2 >= as.Date("2009-01-01") & V2 <= as.Date("2009-12-31") )

 Warning messages:

1: In eval(expr, envir, enclos) :
Incompatible methods ("Ops.factor", "Ops.Date") for ">="

2: In eval(expr, envir, enclos) :
Incompatible methods ("Ops.factor", "Ops.Date") for "<="

我们非常感谢任何纠正每年选择更好方式的建议。提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

所以这里有很多事情要发生。

首先,您(尝试)将diagnoses2009设置为一组日期,但您的子集表达式根本不使用该变量。

其次,正如@joran指出您使用了错误的格式字符串:您的日期格式为%Y-%m-%d。当您使用不正确的格式字符串运行as.Date(...)时,所有日期都会获得NA。因此diagnoses2009NA的向量。

第三,有更好的方法来分割数据帧。你可以这样做:

library(lubridate)
df.subsets <- split(df,year(as.Date(df$V2, "%Y-%m-%d")))

这会创建一个数据框列表,每年一个。

最后,正如@beginnerR指出的那样,你没有告诉我们你打算用拆分数据集做些什么。可能有一个很多更好的方法来处理您的整体问题。