如何使用dplyr在R中移除数据框某列含≥5位数字的行?
使用dplyr移除vec列中含≥5位数字的行
可以通过dplyr的filter()函数结合两种常见逻辑实现需求,以下是具体方案:
方法1:基于数值大小判断(高效适用于非负整数)
因为5位数的最小值是10000,直接筛选小于10000的数值即可:
library(dplyr) # 构造原始数据集 vec = c(989, 987, 145, 315, 8449, 9999999999000) char = c("a","b","c","d","e","f") df2 = tibble(vec, char) # 筛选并得到结果 df_filtered <- df2 %>% filter(vec < 10000) # 查看结果 df_filtered
方法2:转为字符串判断长度(通用场景)
如果需要处理可能带符号的数值,或者更直观判断数字位数,可将数值转为字符串后判断长度:
df_filtered <- df2 %>% filter(nchar(as.character(vec)) < 5)
注:如果存在负数,需先取绝对值再判断长度:nchar(as.character(abs(vec))) <5
最终输出结果
# A tibble: 5 × 2 vec char <dbl> <chr> 1 989 a 2 987 b 3 145 c 4 315 d 5 8449 e
内容的提问来源于stack exchange,提问作者Homer Jay Simpson
相关产品推荐
相关产品推荐

