我有一个包含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
但这不起作用。有什么建议吗?
答案 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]