2011-06-28 34 views
4

我有一個具有以下格式的數據幀。R:計數並轉換爲數字

A B 
xxx 100;2;30;5 
yyy 30;5 
zzz 35 

如何計算數字的B列的數量在第二列,並轉換成數如下:

A B 
xxx 4 
yyy 2 
zzz 1 

感謝。

回答

8

假設您的數據位於名稱爲Datadata.frame,則strsplitsapply的組合可以簡化此工作。

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

strsplit被矢量,所以它由";"Data$B分割列的每個元素,並返回向量的列表。該列表對於Data中的每一行具有一個元素,並且每個列表元素包含一個向量(例如,"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