列の値が他の列に表示されている場合は、行をグループ化します

MKa

列の値に基づいてグループ化するデータフレームがあります。

秘訣は、グループ化する列に値がすでに表示されている場合にマージする必要のある行がいくつかあることです。

例えば:

df <- data.frame(col1 = c("R1", "R2", "R2", "R2", "R2", "R4", "R5", "R5", "R5"),
                 col2 = c("R10", "R4", "R5", "R6", "R7", "R5", "R6", "R7", "R9"), stringsAsFactors = FALSE)

df2 <- aggregate(col2 ~ col1, df, FUN = function(x) paste(unique(x), collapse = ", "))

> df
  col1 col2
1   R1  R10
2   R2   R4
3   R2   R5
4   R2   R6
5   R2   R7
6   R4   R5
7   R5   R6
8   R5   R7
9   R5   R9

> df2
  col1           col2
1   R1            R10
2   R2 R4, R5, R6, R7
3   R4             R5
4   R5     R6, R7, R9

R10はグループR1(行1)に含まれます

R4、R5、R6、およびR7はグループR2(行2から5)に含まれますR5はグループR4(行6)に含まれます

R6、R7、およびR9はグループR5に含まれます(行:7から9)

ただし、R4とR5はすでにR2にあるため、これはR2に残ります。元々R5に割り当てられていたR9の場合、R2にグループ化する必要があります。

したがって、望ましい結果は次のようになります。

> df3
  col1               col2
1   R1                R10
2   R2 R4, R5, R6, R7, R9

またはできれば:

1 col1 col2
2   R1  R10
3   R2   R4
4   R2   R5
5   R2   R6
6   R2   R7
7   R2   R9
akrun

オプションはreplaceintersecting要素に基づいて値を設定してからaggregate

i1 <- df$col1 %in% df$col2
df$col1[i1] <- df$col1[match(df$col1[inds], df$col2)]
aggregate(col2 ~ col1, unique(df), FUN = toString)
#   col1               col2
#1   R1                R10
#2   R2 R4, R5, R6, R7, R9

またはと tidyverse

library(dplyr)
library(stringr)
df %>% 
    group_by(col1 = case_when(col1 %in%  intersect(col1, col2) ~ "R2", 
                   TRUE ~ col1)) %>% 
    distinct %>% 
    summarise(col2 = toString(col2))
# A tibble: 2 x 2
#  col1  col2              
#  <chr> <chr>             
#1 R1    R10               
#2 R2    R4, R5, R6, R7, R9

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

複数の列にグループ化されているときに列の値が複数回表示される行を選択します

分類Dev

他のデータフレームの列に値が表示されている場合は、新しい列を作成します

分類Dev

グループに空の列が含まれている場合は行を削除します

分類Dev

特定の文字列が含まれている場合は、行のグループを印刷します

分類Dev

他の列の基準ごとに列の一意の値を合計します(列がフィルターされている場合)

分類Dev

Rは、特定の列の値に基づいて行をグループ化し、他の列の値をどんどん小さくします

分類Dev

TSQLは、別の列で条件が満たされた場合にのみ列をグループ化します

分類Dev

別の列にゼロ値が表示される場合は、係数を使用して行を削除します

分類Dev

Python:他の2つの列の同じ行に「いいえ」の文字列が含まれている場合は、行から文字列値を削除します

分類Dev

パンダを使用して、指定されたリストに列の値が存在する場合、行をグループ化するにはどうすればよいですか?

分類Dev

他の文字列値にyesが含まれている場合は、文字列の値を取得します

分類Dev

他の2つの列のグループ化された値に基づいて平均列を取得します

分類Dev

グループ化し、日時が特定の時間を超える場合は「ブレーク」を作成し、元のグループ化された列(R、dplyr)内に新しい値を作成します

分類Dev

行がチェックされている場合は、テーブルをループして特定のセルを配列に格納します

分類Dev

R-ベクトル内の文字列が複数の列のいずれかに表示される場合はブール値を返します

分類Dev

列の数によるグループ化が1より大きい場合に、特定の列の値が最も小さい行を削除する方法

分類Dev

グループ内のいずれかの行に特定の値が含まれている場合は、新しい列を作成して値を割り当てます

分類Dev

列の値が等しい場合は値、それ以外の場合はグループ化中にNULL

分類Dev

(グループ化された場合)合計が特定の値になる日付のすべての行インデックスを検索します

分類Dev

1つの列の合計に基づいて、パンダの他の2つの列でグループ化された新しい列を追加します

分類Dev

列の値が重複している場合は行を非表示にする

分類Dev

他の2つの列の値のグループ化された合計に基づいて、新しい値の列を作成するにはどうすればよいですか?

分類Dev

この文字列が私の列に表示されている場合は、他の列の情報を上書きします

分類Dev

他の列を維持しながら、他の列でグループ化された、1つの列に最小値を持つ行を取得するにはどうすればよいですか?

分類Dev

列の値が別の列の同じグループに表示されない行を表示する

分類Dev

Html.DropDownListBoolによるグループ化の場合-bool値の代わりに文字列を表示します

分類Dev

列に値が指定されている場合は各グループからレコードを選択し、そうでない場合は任意の1つのレコードを選択します

分類Dev

指定された列に値が含まれている場合にのみデータをプルするようにクエリを実行する方法

分類Dev

リスト内の他の列によってグループ化された列を合計する方法は?

Related 関連記事

  1. 1

    複数の列にグループ化されているときに列の値が複数回表示される行を選択します

  2. 2

    他のデータフレームの列に値が表示されている場合は、新しい列を作成します

  3. 3

    グループに空の列が含まれている場合は行を削除します

  4. 4

    特定の文字列が含まれている場合は、行のグループを印刷します

  5. 5

    他の列の基準ごとに列の一意の値を合計します(列がフィルターされている場合)

  6. 6

    Rは、特定の列の値に基づいて行をグループ化し、他の列の値をどんどん小さくします

  7. 7

    TSQLは、別の列で条件が満たされた場合にのみ列をグループ化します

  8. 8

    別の列にゼロ値が表示される場合は、係数を使用して行を削除します

  9. 9

    Python:他の2つの列の同じ行に「いいえ」の文字列が含まれている場合は、行から文字列値を削除します

  10. 10

    パンダを使用して、指定されたリストに列の値が存在する場合、行をグループ化するにはどうすればよいですか?

  11. 11

    他の文字列値にyesが含まれている場合は、文字列の値を取得します

  12. 12

    他の2つの列のグループ化された値に基づいて平均列を取得します

  13. 13

    グループ化し、日時が特定の時間を超える場合は「ブレーク」を作成し、元のグループ化された列(R、dplyr)内に新しい値を作成します

  14. 14

    行がチェックされている場合は、テーブルをループして特定のセルを配列に格納します

  15. 15

    R-ベクトル内の文字列が複数の列のいずれかに表示される場合はブール値を返します

  16. 16

    列の数によるグループ化が1より大きい場合に、特定の列の値が最も小さい行を削除する方法

  17. 17

    グループ内のいずれかの行に特定の値が含まれている場合は、新しい列を作成して値を割り当てます

  18. 18

    列の値が等しい場合は値、それ以外の場合はグループ化中にNULL

  19. 19

    (グループ化された場合)合計が特定の値になる日付のすべての行インデックスを検索します

  20. 20

    1つの列の合計に基づいて、パンダの他の2つの列でグループ化された新しい列を追加します

  21. 21

    列の値が重複している場合は行を非表示にする

  22. 22

    他の2つの列の値のグループ化された合計に基づいて、新しい値の列を作成するにはどうすればよいですか?

  23. 23

    この文字列が私の列に表示されている場合は、他の列の情報を上書きします

  24. 24

    他の列を維持しながら、他の列でグループ化された、1つの列に最小値を持つ行を取得するにはどうすればよいですか?

  25. 25

    列の値が別の列の同じグループに表示されない行を表示する

  26. 26

    Html.DropDownListBoolによるグループ化の場合-bool値の代わりに文字列を表示します

  27. 27

    列に値が指定されている場合は各グループからレコードを選択し、そうでない場合は任意の1つのレコードを選択します

  28. 28

    指定された列に値が含まれている場合にのみデータをプルするようにクエリを実行する方法

  29. 29

    リスト内の他の列によってグループ化された列を合計する方法は?

ホットタグ

アーカイブ