【问题标题】:Filter out from a dataset rows where values of two variables are both = 0 in dplyr从 dplyr 中两个变量的值都 = 0 的数据集中过滤掉
【发布时间】:2017-03-22 15:38:39
【问题描述】:

我有以下数据:

x y z
A 0 0
B 1 0
C 0 2
D 1 1
E 2 0
F 2 3
G 1 3
H 0 0
I 3 3

我想使用 dplyr 自动从该数据集中过滤掉 'y' 和 'z' 同时假定为 0 值的所有行(即我只想排除 A 和 H)

【问题讨论】:

  • 假设 dat 是我的数据集,dat<-dat%>%filter(y!=0 & z!=0) 但这也不包括像 B C E 这样的行
  • 只是df[rowSums(df[c(2:3)]) != 0,]
  • 我不知道 dplyr 处理连接的效率如何,但anti_join(DF, data.frame(y=0,z=0))...这就是我对 data.table 所做的,但在 dplyr 中,最好是 filter。跨度>

标签: r database dplyr


【解决方案1】:

使用dplyr

library(dplyr)

df %>% 
    filter(y != 0 | z != 0)

#   x y z
# 1 B 1 0
# 2 C 0 2
# 3 D 1 1
# 4 E 2 0
# 5 F 2 3
# 6 G 1 3
# 7 I 3 3

【讨论】:

    【解决方案2】:

    如果您的数据集存储在名为 dfdata.frame

    您可以使用dplyr 执行此操作:

    filter(df, !y == 0, !z == 0)
    

    将返回:

    x y z
    B 1 0
    C 0 2
    D 1 1
    E 2 0
    F 2 3
    G 1 3
    I 3 3
    

    【讨论】:

    • 谢谢,但我想排除 A 和 H
    • @GabrieleMidolo 我已经编辑了,我想这就是你要找的东西
    • 这里使用了“and”条件,但这里使用了“or”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    相关资源
    最近更新 更多