我有一个带有 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"
将grep
与invert = TRUE
结合使用
length(grep("\.", df$ID, invert = TRUE))
#[1] 3
grep("\.", df$ID, invert = TRUE, value = TRUE)
#[1] "0055" "UUUT" "1100"
使用包stringr
str_count
library(stringr)
sum(!str_count(df$ID, "\."))
#[1] 3
df[!str_count(df$ID, "\."), ]
#[1] "0055" "UUUT" "1100"
length(which(!grepl('\.',df$ID)))