データフレーム列のセミコロンを含む要素を、基本的なRを使用して列の下部にある分割されたエントリに置き換える関数を作成しようとしました。主な目的は次のとおりです。 applyでこの関数を使用し、セミコロンでエントリを検出すると常に追加します。セミコロンで分割するR
私のコードの主な問題は、追加の値なしでまったく同じデータフレームを返すことです。
> df
rs2480711
rs74832092
rs4648658
rs4648659
rs61763535
rs28733941;rs67677371
>x
"rs28733941;rs67677371"
function(x){
semiCols = length(unlist(strsplit(x, ";")))
elementsRs = unlist(strsplit(x, ";"))
if(semiCols>1){
for(i in 1:semiCols){
df = rbind(df, elementsRs[i])
}}}
他のすべての値を変更せずに1つの値に基づいて行を分割するには、どのようにコードを拡張することができますか。私が正しく理解している場合たとえば、この
>df
0 rs61763535 T1
1 rs28733941;rs67677371 T2
は、私は適切にあなたを得ることができなかった、これは再び
unlist(strsplit(as.character(df$V1),split = ";"))
を動作しますが、この
>df2
0 rs61763535 T1
1 rs28733941 T2
1 rs67677371 T2
期待される出力は何ですか?「x」は何ですか? – akrun
@Sotos。それを試してみましたが、何らかの理由で空白の値を持つすべてのエントリを削除します。 – civy
'splitstackshape :: cSplit(df、 'V2'、 ';'、 'long')'は私のために働きます – Sotos