我是R的新手,我需要一些帮助来完成一些事情。 首先,我必须在下面的表格中分析一个包含2列的766K行的巨大数据集:
G40 2003-04-09
Z11 1997-08-15
K60 2006-03-16
I10 2000-11-30
数据集的名称为Rdiagnoses
,默认情况下Col1 is V1
和Col2 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 "<="
我们非常感谢任何纠正每年选择更好方式的建议。提前感谢您的帮助!
答案 0 :(得分:1)
所以这里有很多事情要发生。
首先,您(尝试)将diagnoses2009
设置为一组日期,但您的子集表达式根本不使用该变量。
其次,正如@joran指出您使用了错误的格式字符串:您的日期格式为%Y-%m-%d
。当您使用不正确的格式字符串运行as.Date(...)
时,所有日期都会获得NA
。因此diagnoses2009
是NA
的向量。
第三,有更好的方法来分割数据帧。你可以这样做:
library(lubridate)
df.subsets <- split(df,year(as.Date(df$V2, "%Y-%m-%d")))
这会创建一个数据框列表,每年一个。
最后,正如@beginnerR指出的那样,你没有告诉我们你打算用拆分数据集做些什么。可能有一个很多更好的方法来处理您的整体问题。