R for循环:创建一个新列,其中包含来自不同列的子str的计数

n8s*_*sty 1 string for-loop r calculated-columns

我曾经捣乱过R,现在一切似乎都逃过了我...

我有一个有几百列和大约100k行的表.其中一列包含有时带有逗号的字符串(例如鸡,山羊,牛或鸡).我需要一个带有(我相信)for循环的脚本,它可以创建一个新列(我知道新的列代码不应该在for循环中),计算逗号的数量(或者有问题的列中的条目数)少一个)并添加一个,以便我可以找出每列中有多少条目.一个例子:

col
chicken
chicken,goat
cow,chicken,goat
cow
Run Code Online (Sandbox Code Playgroud)

我想要一个脚本在表中创建一个看起来像的附加列...

col2
1
2
3
1
Run Code Online (Sandbox Code Playgroud)

A5C*_*2T1 7

我会用count.fields(从基地R):

mydf$col2 <- count.fields(file = textConnection(as.character(mydf$col)), 
                          sep = ",")
mydf
#                col col2
# 1          chicken    1
# 2     chicken,goat    2
# 3 cow,chicken,goat    3
# 4              cow    1
Run Code Online (Sandbox Code Playgroud)

更新:占空行

count.fields有一个逻辑论证blank.lines.skip.因此,要捕获空行的信息,只需将其设置为TRUE.

例:

mydf <- data.frame(col = c("chicken", "", "chicken,goat", "cow,chicken,goat", "cow"))

count.fields(file = textConnection(as.character(mydf$col)), 
             sep = ",", blank.lines.skip=FALSE)
# [1] 1 0 2 3 1
Run Code Online (Sandbox Code Playgroud)