5

いくつかのキーと値のペアを spread() しようとしていますが、共通の値の列が折りたたまれません。以前の処理に関係している可能性があるか、期待する結果を得るために 2 つ以上のキーと値のペアを展開する正しい方法がわからない可能性が高いと思います。

私はこのデータセットから始めています:

library(tidyverse)

df <- tibble(order = 1:7,
             line_1 = c(23,8,21,45,68,31,24),
             line_2 = c(63,25,25,24,48,24,63),
             line_3 = c(62,12,10,56,67,25,35))

次の gather() 関数で作成される「カウント」値の順序を定義するために、2 つの事前拡散ステップがあります。これは、行番号を使用して「カウント」変数の元の順序を定義する最初の事前拡散ステップです。

ntrl <- df %>%
           gather(line_1,
                  line_2,
                  line_3,
                  key = "sector",
                  value = "count") %>%
           group_by(order) %>%
           mutate(sector_ord = row_number()) %>%
           arrange(order,
                   sector)

これは、「カウント」変数の数値順序を定義する 2 番目の事前拡散ステップです。

ord <- ntrl %>%
            arrange(order,
                    count) %>%
            group_by(order) %>%
            mutate(num_ord = paste0("ord_",
                                    row_number(),
                                    sep=""))

そして最後に、私が使用している拡散コード:

wide <- ord %>%
            group_by(order) %>%
            spread(key = sector,
                   value = count) %>%
            spread(key = num_ord,
                   value = sector_ord)

私が得ているのはこれです:

    order   line_1  line_2  line_3  ord_1   ord_2   ord_3                           
1   1       23      NA      NA      1       NA      NA
2   1       NA      63      NA      NA      NA      2
3   1       NA      NA      62      NA      3       NA
4   2       8       NA      NA      1       NA      NA
5   2       NA      25      NA      NA      NA      2
6   2       NA      NA      12      NA      3       NA
7   3       21      NA      NA      NA      1       NA
8   3       NA      25      NA      NA      NA      2
9   3       NA      NA      10      3       NA      NA
... and so on thru 21 lines accounting for all 7 "order" lines

私が期待している動作は、「順序」列が同じ「順序」値であるすべての行で折りたたまれ、次のようになることです。

    order   line_1  line_2  line_3  ord_1   ord_2   ord_3                           
1   1       23      63      62      1       3       2
2   2       8       25      12      1       3       2
3   3       21      25      10      2       3       1
4   4       45      24      56      2       1       3
... and so on, I think that paints the picture

重複した識別子を使用した拡散と行番号のインデックスの使用に関する質問と回答を確認しましたが、役に立ちません。

二重拡散と関係があると思いますが、その方法がわかりません。

ご協力いただきありがとうございます。

4

2 に答える 2