EID Year Performance_rating
E100 2013 4
E100 2014 1
E200 2012 4
E200 2013 5
E200 2014 2
E200 2015 4
我需要用于建模目的的数据的方式是非重复的EID,每年的性能等级在不同的列中(注意一些有2年的数据,有些3和4有4个基于加入日期)
EID Performance_rating_2012 Performance_rating_2013 Performance_rating_2014 Performance_rating_2015
E100 NA 4 1 NA
E200 4 5 2 4
我尝试了多种方法来解决这个问题但是失败了所以发布在这里,任何答案都会非常感激
答案 0 :(得分:3)
包tidyr
具有此情况和其他所需的确切解决方案:
library(tidyr)
df %>% spread(Year, Performance_rating)
结果输出是宽数据框:
EID 2012 2013 2014 2015
1 E100 NA 4 1 NA
2 E200 4 5 2 4
答案 1 :(得分:2)
我们可以使用dcast
library(reshape2)
dcast(df1, EID~ paste0("Performance_rating_", Year), value.var="Performance_rating")
# EID Performance_rating_2012 Performance_rating_2013 Performance_rating_2014 Performance_rating_2015
#1 E100 NA 4 1 NA
#2 E200 4 5 2 4