R 使用字符串重塑

R Reshape Using String

我有这个数据

data=data.frame(GROUP=c(1,2), a.q.var=c(5,4), b.w.var=c(7,8),
c.e.var=c(2,3))

但我想要通过“.var”重塑的数据

data2=data.frame(VARIABLE=c('a.q.var','b.w.var','c.e.var','a.q.var','b.w.var','c.e.var'),
VALUE=c(5,7,2,4,8,3),
GROUP=c(1,1,1,2,2,2))

我尝试的是:

library(reshape2)
data2 = reshape(data, id.var = grep('$.var'))

但是没用

我们可以使用pivot_longer

library(tidyr)
pivot_longer(data, cols  = -GROUP, names_to = 'VARIABLE', values_to = 'VALUE')

或者用data.table

library(data.table)
melt(setDT(data), id.var = 'GROUP', variable.name = 'VARIABLE', value.name = 'VALUE')