如何删除仅包含数字的行。 我有:
col A colB colc
1947 2 3
1947 USA1 USA
1947 Canada Canada
1947 NA Mexico
我想要的是:
col A colB colc
1947 USA1 USA
1947 Canada Canada
1947 NA Mexico
请注意数字存在于其他行中,但我希望删除仅包含数字的行(基于colB
和colc
)
我在c(“USA1”,“canada”,“墨西哥”)中尝试了grep,但这删除了我想保留的NA值。
答案 0 :(得分:1)
我们可以遍历列,使用grepl
查找数字元素,然后Reduce
将其设置为逻辑vector
以对行进行子集
df1[!Reduce(`|`, lapply(df1[-1], grepl, pattern = '^[0-9]+$')),]
# colA colB colc
#2 1947 USA1 USA
#3 1947 Canada Canada
#4 1947 <NA> Mexico
另一种选择是转换为numeric
,然后与is.na
核对,因为所有非数字元素都会转换为NA
并带有警告消息
df1[Reduce(`&`, lapply(df1[-1], function(x) is.na(as.numeric(x)))),]