R语言如何删除数据框中指定列含字符值的对应整行?
实现方法
你构造的示例数据框中row2列因为混入了字符值,整列会默认转为字符/因子类型,以下是几种常用实现方案:
方法1:基础R强制转数值过滤
通过将row2强制转为数值类型,非数值内容会转为NA,过滤掉NA对应的行即可,兼容因子/字符类型的row2列:
# 先转字符再转数值,避免因子类型转数值时出现水平编号错误 df$row2 <- as.numeric(as.character(df$row2)) # 过滤掉row2为NA的行 df <- df[!is.na(df$row2), ]
方法2:正则匹配纯数字(无需修改列类型)
如果不需要将row2转为数值类型,只需要筛选值为数字的行,可以用正则匹配实现:
# 匹配仅由数字组成的row2值,保留对应行 df <- df[grepl("^\\d+$", df$row2), ] # 若要兼容带小数的数值,可改用正则:grepl("^\\d+(\\.\\d+)?$", df$row2)
方法3:dplyr语法实现
如果你习惯使用tidyverse生态的语法,可以用dplyr的管道操作实现:
library(dplyr) df <- df %>% mutate(row2 = as.numeric(as.character(row2))) %>% filter(!is.na(row2))
内容的提问来源于stack exchange,提问作者juanjedi
相关产品推荐
相关产品推荐

