データフレームの列を分割し、それに応じて行を複製する方法は?

enricoferrero

私はこのようなデータフレームを持っています:

> df <- data.frame(Column1=c("id1", "id2", "id3"), Column2=c("text1,text2,text3", "text4", "text5,text6"), Column3=c("text7", "text8,text9,text10,text11", "text12,text13"))

> df
  Column1           Column2                   Column3
1     id1 text1,text2,text3                     text7
2     id2             text4 text8,text9,text10,text11
3     id3       text5,text6             text12,text13

この形式に変換するにはどうすればよいですか?

  Column1 variable                     value
1     id1  Column2                     text1
2     id1  Column2                     text2
3     id1  Column2                     text3
4     id2  Column2                     text4
5     id3  Column2                     text5
6     id3  Column2                     text6
7     id1  Column3                     text7
8     id2  Column3                     text8
9     id2  Column3                     text9
10    id2  Column3                    text10
11    id2  Column3                    text11
12    id3  Column3                    text12
13    id3  Column3                    text13

最初のステップはmelt()データフレームステップだと思います(ところで、その警告について心配する必要がありますか?):

> library(reshape2)    
> mdf <- melt(df, id.vars="Column1", measure.vars=c("Column2", "Column3"))
> mdf
  Column1 variable                     value
1     id1  Column2         text1,text2,text3
2     id2  Column2                     text4
3     id3  Column2               text5,text6
4     id1  Column3                     text7
5     id2  Column3 text8,text9,text10,text11
6     id3  Column3             text12,text13
Warning message:
attributes are not identical across measure variables; they will be dropped

次に、基本的に `` strsplit() `'value'列を作成し、それに応じて行を複製する必要がありますが、それを行う方法を考えることはできません。

> strsplit(mdf$value, ",")
[[1]]
[1] "text1" "text2" "text3"

[[2]]
[1] "text4"

[[3]]
[1] "text5" "text6"

[[4]]
[1] "text7"

[[5]]
[1] "text8"  "text9"  "text10" "text11"

[[6]]
[1] "text12" "text13"

どんな助けでも大歓迎です!ありがとう。

akrun

あなたは試すことができます:

 library(reshape2)

cSplithttps://gist.github.com/mrdwab/11380733から

 cSplit(melt(df, id.vars="Column1"), "value", ",", "long")
 #      Column1 variable  value
 # 1:     id1  Column2  text1
 # 2:     id1  Column2  text2
 # 3:     id1  Column2  text3
 # 4:     id2  Column2  text4
 # 5:     id3  Column2  text5
 # 6:     id3  Column2  text6
 # 7:     id1  Column3  text7
 # 8:     id2  Column3  text8
 # 9:     id2  Column3  text9
 #10:     id2  Column3 text10
 #11:     id2  Column3 text11
 #12:     id3  Column3 text12
 #13:     id3  Column3 text13

あるいは、CRANパッケージで利用可能な関数に固執したい場合:

library(reshape2)
library(splitstackshape)
library(dplyr)
select(na.omit(concat.split.multiple(melt(df, id.vars="Column1"), split.col="value", sep=",", direction="long")), -time)

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Python、データフレーム内の行を列の整数で複製し、それに応じて減らします

分類Dev

データフレーム列を2値化し、それに応じて他の列値を分割します

分類Dev

複数の列の値に応じてデータフレームを分割する方法

分類Dev

同じパンダデータフレームの列の値に基づいて行を複製する方法

分類Dev

パンダのデータフレーム列リスト値を分割して行を複製する

分類Dev

列のセルの分割に基づいてRデータフレームの行を複製する

分類Dev

データフレームで複数の文字列を検索し、文字列の列と行に応じて異なる列の内容をプルする方法

分類Dev

データフレーム列の条件に応じて比較を行う方法は?

分類Dev

あなたはそれを送信する方法に応じて複数の方法でデータを送信します

分類Dev

特定の条件に応じてパンダでデータフレーム内の重複行を削除する方法

分類Dev

条件に応じて、データフレームのN行を削除する方法

分類Dev

pandasデータフレームのコンテンツに応じて1列を2列に分割します

分類Dev

Pythonで日付を使用してデータフレーム列を複数の列に分割する方法

分類Dev

列の行に基づいてデータフレームを分割する方法

分類Dev

Sparkデータフレームの行を列に分割する方法は?

分類Dev

複数の分割データフレームの行名に列を強制してから、(長さが等しくない)すべてのデータフレームに関数を適用するにはどうすればよいですか?

分類Dev

データフレーム内の列を複製する方法

分類Dev

R:セルの値を条件として、データフレームの行を複数の行に分割するにはどうすればよいですか?

分類Dev

R:データフレーム内の行を複製した後にループを実行する方法

分類Dev

等しい長さに基づいてデータフレーム列をRの別々の行に分割する方法

分類Dev

データフレームを検索し、それに応じてそれぞれを並べ替える方法は?

分類Dev

データフレームの列値を複数の列に分割する方法

分類Dev

1つの行を複数に分割し、データフレーム列に日時を適用するにはどうすればよいですか?

分類Dev

同じデータフレームの複数の列からの複数の基準に応じて、データフレームに新しい列を作成する方法

分類Dev

文字に基づいてデータフレーム列を分割し、その文字を保持するにはどうすればよいですか?

分類Dev

列の値に応じて、データフレームをサブデータフレームに分割します

分類Dev

行と列の値に応じてPySparkデータフレームのサイズと分布を変更するにはどうすればよいですか?

分類Dev

別の列の部分文字列の存在に応じてPythonデータフレーム列を更新する方法

分類Dev

データフレームで行を列に分割する方法

Related 関連記事

  1. 1

    Python、データフレーム内の行を列の整数で複製し、それに応じて減らします

  2. 2

    データフレーム列を2値化し、それに応じて他の列値を分割します

  3. 3

    複数の列の値に応じてデータフレームを分割する方法

  4. 4

    同じパンダデータフレームの列の値に基づいて行を複製する方法

  5. 5

    パンダのデータフレーム列リスト値を分割して行を複製する

  6. 6

    列のセルの分割に基づいてRデータフレームの行を複製する

  7. 7

    データフレームで複数の文字列を検索し、文字列の列と行に応じて異なる列の内容をプルする方法

  8. 8

    データフレーム列の条件に応じて比較を行う方法は?

  9. 9

    あなたはそれを送信する方法に応じて複数の方法でデータを送信します

  10. 10

    特定の条件に応じてパンダでデータフレーム内の重複行を削除する方法

  11. 11

    条件に応じて、データフレームのN行を削除する方法

  12. 12

    pandasデータフレームのコンテンツに応じて1列を2列に分割します

  13. 13

    Pythonで日付を使用してデータフレーム列を複数の列に分割する方法

  14. 14

    列の行に基づいてデータフレームを分割する方法

  15. 15

    Sparkデータフレームの行を列に分割する方法は?

  16. 16

    複数の分割データフレームの行名に列を強制してから、(長さが等しくない)すべてのデータフレームに関数を適用するにはどうすればよいですか?

  17. 17

    データフレーム内の列を複製する方法

  18. 18

    R:セルの値を条件として、データフレームの行を複数の行に分割するにはどうすればよいですか?

  19. 19

    R:データフレーム内の行を複製した後にループを実行する方法

  20. 20

    等しい長さに基づいてデータフレーム列をRの別々の行に分割する方法

  21. 21

    データフレームを検索し、それに応じてそれぞれを並べ替える方法は?

  22. 22

    データフレームの列値を複数の列に分割する方法

  23. 23

    1つの行を複数に分割し、データフレーム列に日時を適用するにはどうすればよいですか?

  24. 24

    同じデータフレームの複数の列からの複数の基準に応じて、データフレームに新しい列を作成する方法

  25. 25

    文字に基づいてデータフレーム列を分割し、その文字を保持するにはどうすればよいですか?

  26. 26

    列の値に応じて、データフレームをサブデータフレームに分割します

  27. 27

    行と列の値に応じてPySparkデータフレームのサイズと分布を変更するにはどうすればよいですか?

  28. 28

    別の列の部分文字列の存在に応じてPythonデータフレーム列を更新する方法

  29. 29

    データフレームで行を列に分割する方法

ホットタグ

アーカイブ