如何仅堆叠数据框中的某些列?

saf*_*fsd 4 r reshape

我在以下格式的数据框中有一些数据:

A  B  C  V1  V2  V3
1  1  1  x   y   z
1  1  2  a   b   c
...
Run Code Online (Sandbox Code Playgroud)

其中 A、B、C 是因子,A、B、C 组合对于每一行都是唯一的。

我需要将一些列转换为因子,以实现如下形式:

A  B  C  V  val
1  1  1  V1 x
1  1  1  V2 y
1  1  1  V3 z
1  1  2  V1 a
1  1  2  V2 b
1  1  2  V2 c
...
Run Code Online (Sandbox Code Playgroud)

这似乎与堆栈xtabs的逆有关,但我不知道如何指定仅应“堆叠”某些列。

the*_*ail 5

在@AnandaMahto 来到这里并提供他的基本reshape解决方案之前,这是我的尝试:

dat <- read.table(text = 'A  B  C  V1  V2  V3
1  1  1  x   y   z
1  1  2  a   b   c',header= T)

expandvars <- c("V1","V2","V3")

datreshape <- reshape(dat,
                   idvar=c("A","B","C"),
                   varying=list(expandvars),
                   v.names=c("val"),
                   times=expandvars,
                   direction="long")

> datreshape
         A B C time val
1.1.1.V1 1 1 1   V1   x
1.1.2.V1 1 1 2   V1   a
1.1.1.V2 1 1 1   V2   y
1.1.2.V2 1 1 2   V2   b
1.1.1.V3 1 1 1   V3   z
1.1.2.V3 1 1 2   V3   c
Run Code Online (Sandbox Code Playgroud)