R dplyr 根据给定列的数值过滤行

标签 r apache-spark dplyr

在 Spark 平台上工作,使用 R 和 RStudio Server,我想在给定列(字符串)满足数字条件的情况下过滤我的 tbl。因此,该列包含数字/整数值 ('1234') 和字符串值 ('x1234'),我想过滤掉后者。

这是否可以使用 dyplr,例如使用过滤器运算符/函数?

我试过类似的东西:

tbl2 <- tbl %>% filter(!is.numeric(col1))

顺便说一句:数据存储在其他服务器上,我不想在本地加载数据。因此我无法使用像数据框这样的对象。我受限于像 dyplr 这样的库。

非常感谢您的帮助!

最佳答案

我认为这行不通:tbl2 <- tbl %>% filter(!is.numeric(col1)) .在 tbl_df 或 df 中,每一列只有一个类。因此,在您的情况下,包含“123”和“x123”的 col1 应该属于“字符”类。

一种可能的解决方案是将 col1 转换为数字并测试转换是否成功。

tbl2 <- tbl %>% filter(!is.na(as.numeric(col1)))

测试:

library(data.frame)
df <- data.frame(a=1:3,b=2:4)
df[2,2] <- "x123"
class(df$b)
# "character"
df %>% filter(!is.na(as.numeric(b)))
#  a b
#1 1 2
#2 3 4

注意:有一条警告消息。

关于R dplyr 根据给定列的数值过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41223743/

相关文章:

scala - 来自Scala的hdfs连接错误

r - 在 mutate() 中找不到函数 "across"

如果一行满足条件,则删除具有共同值的行

arrays - Spark 2.0.x 从包含一个字符串类型数组的数据帧转储 csv 文件

在 R 循环中重新编码变量

R:避免在使用应用函数时将单行数据帧转换为向量

r - 如何仅获取特定行的列均值?

apache-spark - 限制apache spark作业运行持续时间

r - 在purrr::map中相当于 `break`

r - 在 R googleVis sankey 图表中分配节点和链接颜色