私は以下のフォーマットのデータフレームを持っています。R:数値に変換して数値に変換する
2列目の列Bに数字の数をカウントし、次のようにカウント数に変換する方法A B
xxx 100;2;30;5
yyy 30;5
zzz 35
:
A B
xxx 4
yyy 2
zzz 1
感謝。
私は以下のフォーマットのデータフレームを持っています。R:数値に変換して数値に変換する
2列目の列Bに数字の数をカウントし、次のようにカウント数に変換する方法A B
xxx 100;2;30;5
yyy 30;5
zzz 35
:
A B
xxx 4
yyy 2
zzz 1
感謝。
データがData
のdata.frame
であるとすると、strsplit
とsapply
の組み合わせがこれを簡単に行います。
Data$C <- sapply(strsplit(Data$B, ";"), length)
strsplit
ベクトル化ので、";"
によってカラムData$B
の各要素を分割し、ベクトルのリストを返します。リストにはData
の各行に1つの要素があり、各リスト要素にはベクトルが含まれます(例:"100;2;30;5"
はc("100","2","30","5")
に変換されます)。 sapply
呼び出しは、リスト内の各ベクトルの長さを返します。
これは、トリックを行います。
dfr$B<-nchar(as.character(dfr$B))-nchar(gsub(";","",dfr$B))+1
編集:
dfr$B<-nchar(as.character(dfr$B))-nchar(gsub(";","",dfr$B, fixed=TRUE))+1
:私はこれは少し速くされるべきだと思うが