重塑一个数据框,该数据框在列名中具有多个键,从宽到长

时间:2018-06-19 15:59:24

标签: r

我知道已经有很多页面重塑的页面,但是我没有找到想要的页面,我的问题有点独特。

我有以下数据集:

df <- data.frame(Year=rep(1:4,4),id=rep(1:4,each=4),key1equals1.key2equals1.key3equals1=1,key1equals2.key2equals1.key3equals1=2,key1equals1.key2equals2.key3equals2=3,key1equals2.key2equals1.key3equals2=4)

基本上,有五个键:Year,id,key1,key2,key3

key1,key2,key3的值都包含在列名称中。

我要关注数据集:

Year id key1 key2 key3 value

如果可能,我想使用基数R。

1 个答案:

答案 0 :(得分:1)

从哈德利的答案here中汲取灵感:

library(tidyr)

df %>%
  gather(key, value, -Year, -id) %>%
  extract(key, c("key1", "key2", "key3"), 'key1equals([0-9])\\.key2equals([0-9])\\.key3equals([0-9])')