R 如何计算多字符条件下的行数?

R 如何计算多字符条件下的行数?,r,count,conditional,character,criteria,R,Count,Conditional,Character,Criteria,我在R中有一个数据帧,如下所示: ID Type --------------------------- 1 Green-Red-Red-Green 2 Pink-Blue-Red-Red 3 Green-Green-Red 4 Pink-Blue-Blue-Green 5 Red-Red-Red-Green 所以,我想计算包含单词Green和Red的行数,而不是粉色和蓝色 在这种情况下,数字将是3(3行,实际上当ID=1、3和5时)

我在R中有一个数据帧,如下所示:

ID     Type
---------------------------
1      Green-Red-Red-Green
2      Pink-Blue-Red-Red
3      Green-Green-Red
4      Pink-Blue-Blue-Green
5      Red-Red-Red-Green
所以,我想计算包含单词Green和Red的行数,而不是粉色和蓝色

在这种情况下,数字将是3(3行,实际上当ID=1、3和5时)

我不知道如何用多个标准和角色来做到这一点。请问我该怎么做?

你可以

 `library(data.table)`  

 `dt <- as.data.table(data_frame) # transform your data frame to a data table 
  nrow(dt[(Type%like%"Green") & (Type%like%"Red" & !Type%like%"Pink") & 
 (Type%like%"Blue"),]) # & stands for AND, ! stands for NOT`

您也可以使用正则表达式:

sum(grepl("Green", dt$Type) & grepl("Red", dt$Type) & !grepl("Pink", dt$Type) & !grepl("Blue", dt$Type))

没问题。您可以将您的问题标记为已回答:)我还有另一个问题。如果我想知道粉红色在蓝色之前出现的行数?我怎样才能在单词的位置下做出一个条件?正好在蓝色之前?如果是的话,那么你可以像%“粉红-蓝色”那样做,红色或绿色可以介于两者之间。我只想在清单上先要粉红色,再要蓝色。我试着用sum函数,但我不知道它是否正确。我在每个列表的末尾都有一个END,我计算这个sum((grepl(“粉红蓝”,dt$类型)和!grepl(“粉红蓝,dt$类型”)|(grepl(“粉红绿,dt$类型”)&grepl(“蓝色”,dt$类型)和!grepl(“粉红红,dt$类型”)和!grepl(“粉红蓝,dt$类型”))
sum(grepl("Green", dt$Type) & grepl("Red", dt$Type) & !grepl("Pink", dt$Type) & !grepl("Blue", dt$Type))