我是R的新手,我试图将我得到的数据分离到更易于管理的数据集中。
到目前为止,数据集看起来像这样
mo yr conc.
1 2009 0.6
2 2009 0.8
4 2009 0.3
1 2010 0.5
2 2010 0.6
我正在尝试将其制作成这样的形式
mo conc2009 conc2010
1 0.6 0.5
2 0.8 0.6
3 NA NA
4 0.3 NA
我该如何实现?我当时在考虑使用单独的方法,但这似乎不是主要目的,是什么主意?
答案 0 :(得分:1)
我们可以使用complete
为每个mo
创建yr
的最大值和最小值之间的序列,然后将其扩展为宽格式。
library(tidyverse)
df %>%
complete(yr, mo = seq(min(mo), max(mo))) %>%
mutate(yr = paste0('conc', yr)) %>%
spread(yr, conc)
# mo conc2009 conc2010
# <int> <dbl> <dbl>
#1 1 0.6 0.5
#2 2 0.8 0.6
#3 3 NA NA
#4 4 0.3 NA