以R-年为列的重组面板数据

问题描述 投票:0回答:1

简而言之:我拥有的:

ID  Name  wage2010  wage2011  wage2012  kids2010  kids2011  kids2012 
1  Chris   20,000    18,000    21,000     2          2        2
2  Pat     40,000    45,000    45,000     1          1        2
3  Susan   10,000    18,000    15,000     0          1        1

我想要的是:

ID  Name  year  wage  kids 
1   Chris 2010  20,000  2
1   Chris 2011  18,000  2
1   Chris 2012  21,000  2
2   Pat   2010  40,000  1
2   Pat   2011  45,000  1
2   Pat   2012  45,000  2
3   Susan 2010  10,000  0
3   Susan 2011  18,000  1
3   Susan 2012  15,000  1

有任何帮助建议吗?非常感谢。

r data-manipulation panel-data
1个回答
0
投票

我们可以使用melt中的data.table

library(data.table)
melt(setDT(df1), measure = patterns('^wage', '^kids'),
    variable.name = 'year', value.name = c('wage', 'kids'))

或使用pivot_longer中的tidyr

library(tidyr)
pivot_longer(df1, names_to = c('year', '.value'), names_sep = "(?<=[a-z])(?=[0-9]"))
© www.soinside.com 2019 - 2024. All rights reserved.