2016-08-24 19 views
0

この問題は解決しません。文字列に基づいて行を繰り返し、新しい行の値を置き換えます。

df <- data.frame(number=1:3,name=c('a','b','c'),code=c("5464","5463,5678","45363,6346,6435")) 

第3列の数字が1セットしかない場合は、繰り返しません。 1組以上の数字の場合は、行を繰り返し、後の数字で置き換えます。

オリジナル出力

number name code 
    1  a  "5464" 
    2  b  "5463,5678" 
    3  c  "45363,6346,6435" 

所望の出力

number name code 
    1  a "5464" 
    2  b "5463" 
    2  b "5678" 
    3  c "45363" 
    3  c "6346" 
    3  c "6435" 

を開始する場所を私は本当に知りません。私はstringr::str_split_fixedを使って文字列を区切り、出現回数を数えました。しかしその後、私はこれらの発生に基づいて行を繰り返し、対応する値に置き換えるのが難しいです。

何か助けていただければ幸いです。

答えて

2

我々は、第二の1が正常に動作しますsplitstackshape

library(splitstackshape) 
cSplit(df, "code", ",", "long") 
+0

からtidyr

library(tidyr) separate_rows(df, code) 

またはcSplitからseparate_rowsを使用することができます!最初の関数は、Rのドキュメントには存在していないようです。 – cimentadaj

+0

@ user3617958新しい整理版、つまり0.6.0です。それは私のためにうまく動作します。あなたが持っている整頓のバージョン。 – akrun

+0

ええ、私は0.4.1を使用しています。それでなければならない。 – cimentadaj

関連する問題