我试图根据我的需要调整我关于 Reshape() 的知识,但我做不到。 我的 data.frame 有两组列(a 和 b),我想分别将其 reshape 为长格式。 它还有我想保持不变的变量。像这样:
id 2010a 2011a 2012a char 2010b 2011b 2012b
1 1 2 3 x 5 6 7
2 1 2 3 y 5 6 7
3 1 2 3 z 5 6 7
4 1 2 3 x 5 6 7
到这个长格式
id year a b char
1 2010 1 5 x
2 2010 1 5 y
3 2010 1 5 z
4 2010 1 5 x
1 2011 2 6 x
2 2011 2 6 y
3 2011 2 6 z
4 2011 2 6 x
1 2012 3 7 x
2 2012 3 7 y
3 2012 3 7 z
4 2012 3 7 x
谢谢!
最佳答案
使用 tidyr
的解决方案:
library(tidyr)
library(dplyr)
dt_final <- gather(dt_initial, key = year, value = value, -id) %>%
separate(col=year, into=c("year", "name"), sep=-1) %>%
spread(key = name, value = value) %>%
arrange(id, year)
关于将 data.frame 从宽 reshape 为长,从一组变量创建多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53654398/