计算有条件的记录数

时间:2018-07-10 03:25:19

标签: r regex dataframe

我有一个带有ID列的数据框,我希望R计算不包含点字符的观测值的数量。

这是一个小数据样本:

df <- structure(list(ID =  c("1111.AA","2222.CC","7891.DD","0055","00111.ZZ","00235.WQ", "UUUT", "0057.A", "1100")), .Names=c("ID"), 
            row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9"), class = ("data.frame"))

R应该基于该样本返回3。

2 个答案:

答案 0 :(得分:3)

有多种方法可以找到答案。

我们可以使用IDgrepl中找到带有点字符的观测值,然后将结果求反并得到sum

sum(!grepl("\\.", df$ID))
#[1] 3

如果我们需要这些值

df[!grepl("\\.", df$ID),]
#[1] "0055" "UUUT" "1100"

grepinvert = TRUE一起使用

length(grep("\\.", df$ID, invert = TRUE))
#[1] 3

grep("\\.", df$ID, invert = TRUE, value = TRUE)
#[1] "0055" "UUUT" "1100"

使用str_count包中的stringr

library(stringr)
sum(!str_count(df$ID, "\\."))
#[1] 3

df[!str_count(df$ID, "\\."), ]
#[1] "0055" "UUUT" "1100"

答案 1 :(得分:0)

length(which(!grepl('\\.',df$ID)))