我是R初学者,我很难找到更好的方法来重新编码数据帧的元素。我的数据有一个列,其中包含了采样(评估)的年份,但是我想根据两年一次的子集运行一些测试(不是像格式化的年度一样)。因此,我希望在评估年度确定两个并发年份。我想我可以运行类似的东西:
ddd$Assessment[ddd$Assessment==1997 & ddd$Assessment==1998]<-1998
但是我觉得必须有一个更好的方法(我知道我不需要上面代码的后半部分,但为了清晰起见而留下它),特别是因为我有大量的数据跨越了23年。 任何帮助将非常感谢
答案 0 :(得分:1)
如果您的评估年度始终是每隔一年,则可以使用ceiling
函数的属性创建两年期列。
ddd <- data.frame(Assessment = 1997:2006)
ddd$biennial <- ceiling(ddd$Assessment/2)*2
ddd
# Assessment biennial
#1 1997 1998
#2 1998 1998
#3 1999 2000
#4 2000 2000
#5 2001 2002
#6 2002 2002
#7 2003 2004
#8 2004 2004
#9 2005 2006
#10 2006 2006
答案 1 :(得分:0)
为了对两年的代码进行编码,并确保数据集的未来用户不会误认为此列实际代表的内容,我宁愿使用cut
:
ddd <- data.frame(Assessment = 1997:2006)
ddd$biennial <- cut(ddd$Assessment, breaks = seq(1996, 2008, by=2), right = F)
ddd
# Assessment biennial
#1 1997 [1996,1998)
#2 1998 [1998,2000)
#3 1999 [1998,2000)
#4 2000 [2000,2002)
#5 2001 [2000,2002)
#6 2002 [2002,2004)
#7 2003 [2002,2004)
#8 2004 [2004,2006)
#9 2005 [2004,2006)
#10 2006 [2006,2008)