在 R 中遇到融化问题

Having issues with melt in R

所以目前的数据是这样的。均值列是平均小时工资。 meanann 是平均年工资,因此最后是 ann。进入遵循相同的逻辑。然而,试图让它看起来像下面的预期结果

   ID      mean    meanann    entry     entryann
  32100     100      5200       99         5148
  32101     101      5252      100         5200

预期结果

    ID      mean    entry
  32100     100      99
  32100     5200     5148
  32101     101      100
  32101     5252     5200

一直在使用这个 (https://ademos.people.uic.edu/Chapter8.html) 作为教学工具,但没有找到任何可以这样做的工具。我知道你会做一个融化并指定你的 ID 变量,但问题是它首先堆叠我所有的平均观察,然后是所有的 meanann 等等。

您可以使用来自 tidyrpivot_longer 更轻松地完成此操作:

tidyr::pivot_longer(df, 2:5, names_pattern = "^(mean|entry)", names_to = ".value")
#> # A tibble: 4 x 3
#>      ID  mean entry
#>   <int> <int> <int>
#> 1 32100   100    99
#> 2 32100  5200  5148
#> 3 32101   101   100
#> 4 32101  5252  5200
来自 data.table

melt 可以利用 measure

中的 patterns
library(data.table)
melt(setDT(df), measure = patterns("^mean", "^entry"),
    value.name = c("mean", "entry"))[, variable := NULL][]
#      ID mean entry
#1: 32100  100    99
#2: 32101  101   100
#3: 32100 5200  5148
#4: 32101 5252  5200

数据

df <- structure(list(ID = 32100:32101, mean = 100:101, meanann = c(5200L, 
5252L), entry = 99:100, entryann = c(5148L, 5200L)), 
class = "data.frame", row.names = c(NA, 
-2L))