r中逗号分隔值的计数

r中逗号分隔值的计数,r,R,我有一个名为subcat_id的列,其中的值存储为逗号分隔的列表。我需要计算值的数量,并将计数存储在新列中。列表中也有我想去掉的空值 我想将计数存储在n列中。我们可以试试 nchar(gsub('[^,]+', '', gsub(',(?=,)|(^,|,$)', '', gsub('(Null){1,}', '', df1$subcat_id), perl=TRUE)))+1L #[1] 6 4 或 数据 df1你可以 sapply(strsplit(subcat_id

我有一个名为subcat_id的列,其中的值存储为逗号分隔的列表。我需要计算值的数量,并将计数存储在新列中。列表中也有我想去掉的空值

我想将计数存储在n列中。

我们可以试试

 nchar(gsub('[^,]+', '', gsub(',(?=,)|(^,|,$)', '', 
      gsub('(Null){1,}', '', df1$subcat_id), perl=TRUE)))+1L
 #[1] 6 4

数据
df1你可以

sapply(strsplit(subcat_id,","),FUN=function(x){length(x[x!="Null"])})
strsplit(subcat\u id,“,”)
将返回以逗号分隔的subcat\u id中每个项目的列表
sapply
将对列表中的每个项目应用指定的函数,并向我们返回结果向量

最后,我们应用的函数将只获取每个列表项中的非空项,并计算得到的子列表

例如,如果我们有

subcat_id <- c("1,2,3","23,Null,4")

不要将数据作为图像发布,请了解如何在strsplit(test2$subcat_id,“,”)中给出错误:使用命令的非字符参数将获取error@Sandy2511我编辑了答案以解决这个问题(这是由于数据帧将列视为一个因素造成的)。非常好,谢谢你的帮助,你对这项任务的解释是正确的wonderfull@Sandy2511不客气,我很高兴能帮上忙。如果这个答案解决了你的问题,请考虑接受它。
sapply(strsplit(subcat_id,","),FUN=function(x){length(x[x!="Null"])})
subcat_id <- c("1,2,3","23,Null,4")
sapply(strsplit(as.character(frame$subcat_id),","),FUN=function(x){length(x[x!="Null"])})