R 数据帧重塑。列 headers 需要成为值... dcast 无济于事

R dataframe reshaping. Column headers need to become values... dcast no avail

我是 R 的新手,我正在尝试转换形状为

的数据框
    actor   <- c("a1", "a2", "a3")
    code1 <- c("c1","c2", "c3")
    measure_1 <- c(1, 2, 3)
    measure_2 <- c(4, 5, 6)

    x <- data.frame( actor, player ,measure_1, measure_2, measure_3 )

      actor  code1 measure_1 measure_2 
    1    a1     c1         1         4         
    2    a2     c2         2         5         
    3    a3     c3         3         6         
into 
     actor   code1 meausures   value
    1    a1   c1  measure_1     1      
    2    a1   c1  measure_2     4
    3    a2   c2  measure_1     2
    4    a2   c2  measure_2     5
    5    a3   c3  measure_1     3
    6    a3   c3  measure_2     6

我试过了,dcast 没用。 我不是要聚合并使用另一个函数来查找均值等。 这只是矩阵的重新排序。但是列 headers(measure_1 和 measure2) 实际上成为第二种形式的值,并分配了新列 headers。

提前感谢您的帮助。

library(reshape2)

actor   <- c("a1", "a2", "a3")
code1 <- c("c1","c2", "c3")
measure_1 <- c(1, 2, 3)
measure_2 <- c(4, 5, 6)

x <- data.frame( actor, code1 ,measure_1, measure_2)

melt(x, id.vars = c("actor", "code1"),
     variable.name = "measures",
     value.name = "value")

此解决方案使用最新版本的 tidyr,因此您可能需要先更新包,然后再查看该解决方案是否适合您。

如果您熟悉 tidyr,请查看此小插图 https://tidyr.tidyverse.org/articles/pivot.html

它是关于重塑数据的 reshape2 的 tidyverse 版本。

library(tidyr)
library(tibble)

actor   <- c("a1", "a2", "a3")
code1 <- c("c1","c2", "c3")
measure_1 <- c(1, 2, 3)
measure_2 <- c(4, 5, 6)

x <- tibble( actor, code1 ,measure_1, measure_2)


x %>% 
        pivot_longer(cols = starts_with('measure'), 
                     names_to = 'measure', 
                     values_to = 'value')

# A tibble: 6 x 4
  actor code1 measure   value
  <chr> <chr> <chr>     <dbl>
1 a1    c1    measure_1     1
2 a1    c1    measure_2     4
3 a2    c2    measure_1     2
4 a2    c2    measure_2     5
5 a3    c3    measure_1     3
6 a3    c3    measure_2     6