簡體   English   中英

R:Pivot 通過基於因子組合列而更長

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM