我有一个带有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。
答案 0 :(得分: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"
使用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)))