我有一個具有以下格式的數據幀。R:計數並轉換爲數字
A B
xxx 100;2;30;5
yyy 30;5
zzz 35
如何計算數字的B列的數量在第二列,並轉換成數如下:
A B
xxx 4
yyy 2
zzz 1
感謝。
我有一個具有以下格式的數據幀。R:計數並轉換爲數字
A B
xxx 100;2;30;5
yyy 30;5
zzz 35
如何計算數字的B列的數量在第二列,並轉換成數如下:
A B
xxx 4
yyy 2
zzz 1
感謝。
假設您的數據位於名稱爲Data
的data.frame
,則strsplit
和sapply
的組合可以簡化此工作。
Data$C <- sapply(strsplit(Data$B, ";"), length)
strsplit
被矢量,所以它由";"
Data$B
分割列的每個元素,並返回向量的列表。該列表對於Data
中的每一行具有一個元素,並且每個列表元素包含一個向量(例如,"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