[英]R: Pivot longer by combining the columns based on a factor
我有一個有四列的數據框。 我想使用某種pivot_longer(比如在tidyr中),但是根據一個id將四列的每個值兩兩結合。
例如,如果我有
id A B C D
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 10 5 4 0
我想獲得:
id factor_1 factor_2 value_1 value_2
1 1 A B 10 5
2 1 A C 10 4
3 1 A D 10 0
4 1 B C 5 4
5 1 B D 5 0
6 1 C D 4 0
非常感謝您的任何建議。
最好的。
使用pivot_longer()
是一件事情,但您仍然需要生成成對組合。 下面的代碼使用使用inner_join()
的自連接,但還有其他幾種方法可以解決這個問題。
library("tidyverse")
df <- tribble(
~id, ~A, ~B, ~C, ~D,
1, 10, 5, 4, 0)
df_longer <- df %>%
pivot_longer(cols = c(A, B, C, D), names_to = "factor", values_to = "value")
df_longer %>%
inner_join(df_longer, by = "id", suffix = c("_1", "_2")) %>%
filter(factor_1 < factor_2)
#> # A tibble: 6 x 5
#> id factor_1 value_1 factor_2 value_2
#> <dbl> <chr> <dbl> <chr> <dbl>
#> 1 1 A 10 B 5
#> 2 1 A 10 C 4
#> 3 1 A 10 D 0
#> 4 1 B 5 C 4
#> 5 1 B 5 D 0
#> 6 1 C 4 D 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.