在r中为新列选择data.table中的日期

时间:2015-05-06 07:54:30

标签: r date data.table

我有一个包含65个变量的数据表。我想为学期创建一个新专栏,该专栏在2015-03-31之前分配给第一学期所有ID(所有其他都是第二学期)。

students<-data.table(studid=c(1:6) ,FAC = c("IT","SCIENCE","LAW","IT","COMMERCE","COMMERCE"),dates = c("2010-12-01","2010-03-01", "2010-03-01","2010-05-20", "2010-03-01","2010-03-31"))

我已设置日期类:

students$dates<-as.Date(students$dates)

然后我指定了新列:

students[,Semester:=2,]

然后我试过了:

students$Semester[students$dates < 2015-05-31]<-1

但这不起作用。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

首先,我建议开始使用data.table正确的语法。所有这些$<-等都是基本R语法,它不利用data.table功能。请阅读this link

中的小插曲

换句话说,例如,转换为日期是使用(不需要<-$

students[, dates := as.IDate(dates)]

将通过引用

更新您的数据

其次,当你刚做2015-05-31时,你基本上只是写一个等式:2015-05-31 = 1979。将它发布在控制台中,看看你得到了什么。换句话说,您需要引用"2015-05-31",以便R知道它是一个字符串(稍后在解析为Date时将调度到<类)。

最后,这是使用data.table语法

的解决方案
students[dates < "2015-05-31", Semester := 1]