我有以下的数据帧:ř结合数据帧列与正则表达式
dat <- data.frame(
c = c(1 , 2) , a1 = c(1 , 2) , a2 = c(3 , 4) , b1 = c(5 , 6) , b2 = c(7 , 8)
)
c a1 a2 b1 b2
1 1 1 3 5 7
2 2 2 4 6 8
即我想合并基于共享前缀列成为该数据帧:
dat2 <- data.frame(
c = c(1 , 2 , 1 , 2) , a = c(1 , 2 , 3 , 4) , b = c(5 , 6 , 7 , 8)
)
c a b
1 1 1 5
2 2 2 6
3 1 3 7
4 2 4 8
唯一我能想到的方式是尝试使用melt()
来做到这一点。这是我的尝试:
melt(dat , measure.vars = c(grep("^a" , colnames(dat)) , grep("^b" , colnames(dat))))
variable value
1 1 a1 1
2 2 a1 2
3 1 a2 3
4 2 a2 4
5 1 b1 5
6 2 b1 6
7 1 b2 7
8 2 b2 8
>
不用说,这是不正确。
我觉得'融化'是一个很好的开始。现在您只需阅读“dcast”的帮助页面并完成该过程。 –
有两件事:使用dcast(data = dat,formula = value〜variable) '会让我回到我所在的位置(理论上,我认为,虽然它抛出一个错误,说它找不到“value”某些原因,但我似乎无法弄清楚如何去除变量的数字 – mnosefish