フィルタリングされた文字でデータフレームを分割し、複数の新しい列を作成します

ジョナス

私の仕事では非常に一般的なデータ前処理の問題があります。私は通常、最終的に大規模なマッチング操作を実行したい2つのファイルを持っています。これは通常、2つのステップのプロセスであり、最初のステップでは最初のファイルの「クリーンな」データフレームを作成し、2番目のステップではより大きなデータフレームの2番目のファイルと一致(vlookup)します。この質問の最初のステップで助けが必要です。以下に、作業する簡単な例を作成しました。私の簡略化されたデータフレーム:

c1 <- 1:15
c2 <- c("Valuelabels", "V1", "1", "2", "Valuelabels", "V2", "1", "2", "3", "Valuelabels", "V3", "1", "2", "3", "4")
c3 <- c("", "", "Male", "Female", "", "", "Married", "Single", "Other", "", "", "SingleWithChildren", "SingleWithoutChildren","MarriedWithChildren", "PartneredWithChildren") 

df <- data.frame(row.names =c1,c2,c3)
df

            c2                    c3
1  Valuelabels                      
2           V1                      
3            1                  Male
4            2                Female
5  Valuelabels                      
6           V2                     
7            1               Married
8            2                Single
9            3                 Other
10 Valuelabels                      
11          V3                      
12           1    SingleWithChildren
13           2 SingleWithoutChildren
14           3   MarriedWithChildren
15           4 PartneredWithChildren

ここで、最初の列の「Valuelabel」文字列のデータフレームを分割して、次のような新しいデータフレームを作成します。

   V1 V1_match V2 V2_match V3              V3_match
1:  1     Male  1  Married  1    SingleWithChildren
2:  2   Female  2   Single  2 SingleWithoutChildren
3: NA           3    Other  3   MarriedWithChildren
4: NA          NA           4 PartneredWithChildren

最後に、V1を列名として、それらの下の一致する値を、私の例のV1_match ...などの名前の横にある新しい列としてV2からV3まで使用してデータフレームを作成したいと思います。

このデータフレームは、より大きなデータフレームと照合する前に、私のステップ1を終了します。

助けてくれてとても素晴らしい。

デビッド・アレンバーグ

考えられるdata.table解決策は次のとおりです

library(data.table) # v 1.9.5
setDT(df)[, indx := c2[2L], by = cumsum(c2 == "Valuelabels")]
df2 <- df[!grepl("\\D", c2)][, indx2 := seq_len(.N), by = indx]
dcast(df2, indx2 ~ indx, value.var = c("c2", "c3"))
#    indx2 V1_c2 V2_c2 V3_c2  V1_c3   V2_c3                 V3_c3
# 1:     1     1     1     1   Male Married    SingleWithChildren
# 2:     2     2     2     2 Female  Single SingleWithoutChildren
# 3:     3    NA     3     3     NA   Other   MarriedWithChildren
# 4:     4    NA    NA     4     NA      NA PartneredWithChildren

data.tableを使用してこれを実行するには、v> 1.9.5をインストールする必要があります

library(devtools)
install_github("Rdatatable/data.table", build_vignettes = FALSE)

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

複数の列(listまたはbase.Index)パンダをフィルタリングして新しいデータフレームを作成します

分類Dev

ネストされたlapplyを使用して基準をフィルタリングし、複数のデータフレームを作成します

分類Dev

データフレームをフィルタリングし、新しく作成された列を元のdfに追加します

分類Dev

データフレームを分割し、Rのデータの分割されたチャンクの新しい列を作成します

分類Dev

dplyr :: 2番目の(フィルタリングされた)データフレームに基づいて新しい列を変更します

分類Dev

列に基づいてデータフレームを分割し、特定の名前で複数の分割された.txtファイルを書き出します

分類Dev

2つの日付の間でフィルタリングされた時間に基づいて新しいデータフレームを作成する方法

分類Dev

各ファイルからのフィルタリングされたデータを新しいデータフレームに結合します

分類Dev

検索された列の値までのパンダのデータフレーム行を新しいデータフレームに分割します

分類Dev

データフレーム列の文字列値とセルの値を比較して、複数値ディクショナリに基づいて新しいデータフレームを作成するにはどうすればよいですか?

分類Dev

データフレームをフィルタリングし、指定された条件に従って新しい列を追加します

分類Dev

1つの列と新しい列でグループ化された新しいデータフレームを作成します

分類Dev

パンダでは、リストのリストでフィルタリングされたデータを使用して新しいデータフレームを作成します

分類Dev

複数のデータフレームをループして文字列のリストを取得し、文字列を含む列を検索して、複数の新しいファイルを作成するにはどうすればよいですか?

分類Dev

日付でフィルタリングされたJSONデータを取得し、それから新しい配列を作成します

分類Dev

r別の列でグループ化された要素を行で一致させる新しいデータフレームを作成します

分類Dev

複数の区切り文字に基づいてパンダデータフレームの列のテキストを分割し、それぞれに新しい行を作成したいと思います

分類Dev

1つの列の複数の値を平均して、Rの整頓されたデータフレームに新しい変数を作成します

分類Dev

リストに格納されているフィールド幅の値をスライス/分割して、apache-sparkデータフレーム文字列列を複数の列に分割します

分類Dev

一意の値に基づいてデータフレーム全体をフィルタリングし、Rに新しい列を作成します

分類Dev

pysparkデータフレームの行をフィルタリングし、結果を含む新しい列を作成します

分類Dev

フィルタリングされた値に基づいてデータテーブルの新しい列を作成します

分類Dev

データフレーム内で「-」で区切られた複数の列をマージして、新しい列を作成します

分類Dev

Rの値と等しくないサブセットをフィルタリングして、複数のデータフレームを作成します

分類Dev

Pyspark:複数の条件に基づいてデータフレームをフィルタリングします

分類Dev

Rを使用して、グループ化されたデータフレームに複数のカイ二乗分割表検定を適用し、検定のp値を含む新しい列を追加します。

分類Dev

データフレームをフィルタリングして新しいデータフレームに分割する方法はRにありますか?

分類Dev

データフレーム文字列列を複数の列に分割します

分類Dev

データフレーム文字列列を複数の列に分割します

Related 関連記事

  1. 1

    複数の列(listまたはbase.Index)パンダをフィルタリングして新しいデータフレームを作成します

  2. 2

    ネストされたlapplyを使用して基準をフィルタリングし、複数のデータフレームを作成します

  3. 3

    データフレームをフィルタリングし、新しく作成された列を元のdfに追加します

  4. 4

    データフレームを分割し、Rのデータの分割されたチャンクの新しい列を作成します

  5. 5

    dplyr :: 2番目の(フィルタリングされた)データフレームに基づいて新しい列を変更します

  6. 6

    列に基づいてデータフレームを分割し、特定の名前で複数の分割された.txtファイルを書き出します

  7. 7

    2つの日付の間でフィルタリングされた時間に基づいて新しいデータフレームを作成する方法

  8. 8

    各ファイルからのフィルタリングされたデータを新しいデータフレームに結合します

  9. 9

    検索された列の値までのパンダのデータフレーム行を新しいデータフレームに分割します

  10. 10

    データフレーム列の文字列値とセルの値を比較して、複数値ディクショナリに基づいて新しいデータフレームを作成するにはどうすればよいですか?

  11. 11

    データフレームをフィルタリングし、指定された条件に従って新しい列を追加します

  12. 12

    1つの列と新しい列でグループ化された新しいデータフレームを作成します

  13. 13

    パンダでは、リストのリストでフィルタリングされたデータを使用して新しいデータフレームを作成します

  14. 14

    複数のデータフレームをループして文字列のリストを取得し、文字列を含む列を検索して、複数の新しいファイルを作成するにはどうすればよいですか?

  15. 15

    日付でフィルタリングされたJSONデータを取得し、それから新しい配列を作成します

  16. 16

    r別の列でグループ化された要素を行で一致させる新しいデータフレームを作成します

  17. 17

    複数の区切り文字に基づいてパンダデータフレームの列のテキストを分割し、それぞれに新しい行を作成したいと思います

  18. 18

    1つの列の複数の値を平均して、Rの整頓されたデータフレームに新しい変数を作成します

  19. 19

    リストに格納されているフィールド幅の値をスライス/分割して、apache-sparkデータフレーム文字列列を複数の列に分割します

  20. 20

    一意の値に基づいてデータフレーム全体をフィルタリングし、Rに新しい列を作成します

  21. 21

    pysparkデータフレームの行をフィルタリングし、結果を含む新しい列を作成します

  22. 22

    フィルタリングされた値に基づいてデータテーブルの新しい列を作成します

  23. 23

    データフレーム内で「-」で区切られた複数の列をマージして、新しい列を作成します

  24. 24

    Rの値と等しくないサブセットをフィルタリングして、複数のデータフレームを作成します

  25. 25

    Pyspark:複数の条件に基づいてデータフレームをフィルタリングします

  26. 26

    Rを使用して、グループ化されたデータフレームに複数のカイ二乗分割表検定を適用し、検定のp値を含む新しい列を追加します。

  27. 27

    データフレームをフィルタリングして新しいデータフレームに分割する方法はRにありますか?

  28. 28

    データフレーム文字列列を複数の列に分割します

  29. 29

    データフレーム文字列列を複数の列に分割します

ホットタグ

アーカイブ