r语言 - 计算有条件的记录数



我有一个带有 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。

多种方法可以找出答案。

我们可以在ID中找到具有点字符的观察值数量grepl然后反转结果并得到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"

使用包stringrstr_count

library(stringr)
sum(!str_count(df$ID, "\."))
#[1] 3
df[!str_count(df$ID, "\."), ]
#[1] "0055" "UUUT" "1100"
length(which(!grepl('\.',df$ID)))

最新更新