重塑R中的数据

时间:2018-12-11 23:20:02

标签: r

我确定这是重复的,但是我觉得我已经接近解决方案了。我有一个名为Data的数据框,它具有列名和数据结构,如下所示:

Col1, Col2, Col3, Val1, Val2, Val3, Val4
U,U,A,2,3,9,4

我想将其转换为如下形式:

Types, Col1, Col2, Col3, Nums
Val1, U, U, A, 2
Val2, U, U, A, 3
Val3, U, U, A, 9
Val4, U, U, A, 4

但是我似乎无法使用reshape2软件包。我尝试过:

library(reshape2)
melt <- melt(data)
d_melt <- dcast(melt, Col1+Col2+Col3 ~ Val1+Val2+Val3)

但是,这并不能提供我想要的正确数据形式。同样,如果我反转操作数:

d_melt <- dcast(melt, Val1+Val2+Val3 ~ Col1+Col2+Col3)

这似乎也不起作用。

我要关闭吗?我不太擅长R轴,但是我觉得我缺少一些参数(也许是不同的工具?)来显示新的字段名称。

2 个答案:

答案 0 :(得分:2)

melt单独可以达到以下结果:

melt(df)
# Using Col1, Col2, Col3 as id variables
#   Col1 Col2 Col3 variable value
# 1    U    U    A     Val1     2
# 2    U    U    A     Val2     3
# 3    U    U    A     Val3     9
# 4    U    U    A     Val4     4

答案 1 :(得分:0)

我改用tidyr::gather

library(dplyr)
library(tidyr)

read.table(text = "Col1, Col2, Col3, Val1, Val2, Val3, Val4
                   U,U,A,2,3,9,4", 
                   header = TRUE, 
                   stringsAsFactors = FALSE, 
                   sep = ",") %>% 
gather(Types, Nums, starts_with("Val"))

结果:

  Col1 Col2 Col3 Types Nums
1    U    U    A  Val1    2
2    U    U    A  Val2    3
3    U    U    A  Val3    9
4    U    U    A  Val4    4