と入力から名前と値のペアのデータフレームを作成します。私はこのコードで作成することができ、データフレーム持っている区切り文字
ID Destination Topic
1 1 A\r\nB W
2 2 C X
3 3 D\r\nE\r\nF Y\r\nZ
私がしたい:それはこのようになります
input <- data.frame('ID'=c(1:3),
Destination=c("A\r\nB", "C", "D\r\nE\r\nF"),
Topic=c("W", "X", "Y\r\nZ"))
を区切り文字\r\n
が発生するたびに、
desiredOutput <- data.frame(
ID = c(1,1,1,2,2,3,3,3,3,3) ,
name=c("Destination", "Destination", "Topic", "Destination", "Topic",
"Destination", "Destination", "Destination" , "Topic", "Topic"),
value=c("A","B", "W", "C", "X", "D", "E", "F", "Y", "Z"))
ID name value
1 1 Destination A
2 1 Destination B
3 1 Topic W
4 2 Destination C
5 2 Topic X
6 3 Destination D
7 3 Destination E
8 3 Destination F
9 3 Topic Y
10 3 Topic Z
:次のようになり、出力データフレームを作成します私は正しいID、列の名前、および対応する値で、内容を別々の行に分割したいと思います。
strsplit
を使用して1つの列をリストに分割することはできますが、ループを作成しようとすることを除いて、上記のように内容をデータフレームに入れる方法はわかりません。私はtidyr
パッケージが役に立つと思っています。
strsplit(input$Destination, split = "\r\n")
これはどのようにして、ループなしで行うことができますか?長い形式にtidyrで
ニース。私は 'library(data.table);のようにdata.tableで同じことを考えていました。私はあなたの構文がここでより好きです –
これは非常にエレガントですが、データを分割しないでください。私は 'A_B \ r \ nC_D'のような例を持っています。 '\ r \ n 'によってのみ分割されるべきではありません。 – Bobby
ああ、「分離」は英数字以外の文字が区切り文字であることを前提としています。制限するには、次のように指定します: 'separate_rows(value、sep = '\ r \ n')' – alistaire