2011-06-28 18 views
4

私は以下のフォーマットのデータフレームを持っています。R:数値に変換して数値に変換する

2列目の列Bに数字の数をカウントし、次のようにカウント数に変換する方法
A B 
xxx 100;2;30;5 
yyy 30;5 
zzz 35 

A B 
xxx 4 
yyy 2 
zzz 1 

感謝。

答えて

8

データがDatadata.frameであるとすると、strsplitsapplyの組み合わせがこれを簡単に行います。

Data$C <- sapply(strsplit(Data$B, ";"), length) 

strsplitベクトル化ので、";"によってカラムData$Bの各要素を分割し、ベクトルのリストを返します。リストにはDataの各行に1つの要素があり、各リスト要素にはベクトルが含まれます(例:"100;2;30;5"c("100","2","30","5")に変換されます)。 sapply呼び出しは、リスト内の各ベクトルの長さを返します。

0

これは、トリックを行います。

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 
:私はこれは少し速くされるべきだと思うが
関連する問題