r - 使用 tidyr 在多个键列中收集多个列

标签 r tidyr

不确定 tidyr::gather 是否可用于获取多个列并将它们合并到多个键列中。

也有人问过类似的问题,但都是指在一个关键列中收集多个列。

我正在尝试将 4 列收集到 2 个键列和 2 个值列中,如下例所示:

示例数据:

df <- data.frame(
    subject = c("a", "b"),
    age1 = c(33, 35),
    age2 = c(43, 45),
    weight1 = c(90, 67),
    weight2 = c(70, 87)
)

  subject age1 age2 weight1 weight2
1       a   33   43      90      70
2       b   35   45      67      87

期望的结果:

dfe <- data.frame(
    subject = c("a", "a", "b", "b"),
    age = c("age1", "age2", "age1", "age2"),
    age_values = c(33, 43, 35, 45),
    weight = c("weight1", "weight2", "weight1", "weight2"),
    weight_values = c(90, 70, 67, 87)
)

  subject  age age_values  weight weight_values
1       a age1         33 weight1            90
2       a age2         43 weight2            70
3       b age1         35 weight1            67
4       b age2         45 weight2            87

最佳答案

这是一种方法-

df %>%
  gather(key = "age", value = "age_values", age1, age2) %>%
  gather(key = "weight", value = "weight_values", weight1, weight2) %>%
  filter(substring(age, 4) == substring(weight, 7))

  subject  age age_values  weight weight_values
1       a age1         33 weight1            90
2       b age1         35 weight1            67
3       a age2         43 weight2            70
4       b age2         45 weight2            87

关于r - 使用 tidyr 在多个键列中收集多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53146553/

相关文章:

r - 在 mutate 之外使用 nest 和 purrr::map

R - 正则表达式根据第一个点分隔字符串?

r - 如何计算矩阵中的下三角形元素

r - ggplot 百分比乘以 100

r - 变量 R 之间的转换

r - 在 R 中做数据透视表的另一种方法

r - 之间有什么区别。和.data?

R:如何计算 1 的个数并写入向量

r - 将 strsplit 应用于多列

r - 根据 R dplyr 中的条件将字符转换为 NA