【发布时间】:2021-10-25 15:15:51
【问题描述】:
有人提出了类似的问题,但它们都是指在一个关键列中收集多个列。
我需要两个键中的多个列。
这是我拥有的数据框:
ID ... 测量_A.1 测量_A.2 测量_B.1 测量_B.2 1 8.25 23.5 4 5 2 8.6 22.5 3 4如果我使用以下代码,我会得到:
df %>%
gather(key = measure_A, value = "score_A", measure_A.1, measure_A.2) %>%
gather(key = measure_B, value = "score_B", measure_B.1, measure_B.2)
ID ... measure_A score_A measure_B score_B
1 测量_A.1 8.25 测量_B.1 4
1 测量_A.1 8.25 测量_B.1 4
1 测量_A.2 23.5 测量_B.2 5
1 测量_A.2 23.5 测量_B.2 5
2 测量_A.1 8.6 测量_B.1 3
2 测量_A.1 8.6 测量_B.1 3
2 测量_A.2 22.5 测量_B.2 4
2 测量_A.2 22.5 测量_B.2 4
我想要的是这样的:
ID ... measure_A score_A measure_B score_B 1 测量_A.1 8.25 测量_B.1 4 1 测量_A.2 23.5 测量_B.2 5 2 测量_A.1 8.6 测量_B.1 3 2 测量_A.2 22.5 测量_B.2 4在我看来,我必须减少一些东西,但我不知道如何结合收集命令来做到这一点。我找到了一个带有过滤器的解决方案,但我不明白它是如何工作的。
【问题讨论】:
-
使 df 可重现将有助于答案。另外,请查看 tidyr::pivot_longer()