【发布时间】:2018-12-28 19:00:23
【问题描述】:
我正在将 r dataframe 从长格式转换为宽格式,并带有 NA 值。并尝试添加执行“跳过”NA 值的操作的新行。
我可以使用spread(),但最终希望对跨多年收集的每个测量值执行操作。在下面的示例中,这可能包含两个或多个值。例如meas == 4 包含三个值,而其他测量值包含两个:
df <- data.frame(meas=c(1,1,1,2,2,2,3,3,3,4,4,4),
year=rep(c("y2016", "y2017","y2018")),
value=c(1,2,NA,NA,1,4,1,NA,3,1,5,10))
spread(df, year, value)
meas y2016 y2017 y2018
1 1 1 2 NA
2 2 NA 1 4
3 3 1 NA 3
4 4 1 5 10
我最终要寻找的是介于长数据集和宽数据集之间的东西,如下所示:
meas year1 year2 value1 value2
1 1 2016 2017 1 2
2 2 2017 2018 1 4
3 3 2016 2018 1 3
4 4 2016 2017 1 5
5 4 2017 2018 5 10
【问题讨论】:
-
你需要
dcast(setDT(df), meas ~ rowid(meas), value.var = c('year', 'value'))
标签: r dataframe r tidyr spread