我在 R 中有一个数据框,我想删除某些符合特定条件的行。我该怎么做 ?

我曾尝试使用 dplyrifelse 但我的代码没有给出正确答案

check8 <- distinct(df5,prod,.keep_all = TRUE)

不工作!给出整个数据集

输入是:
check1 <- data.frame(ID = c(1,1,2,2,2,3,4),
                     prod = c("R","T","R","T",NA,"T","R"),
                     bad = c(0,0,0,1,0,1,0))
  #     ID prod bad
#    1  1    R   0
#    2  1    T   0
#    3  2    R   0
#    4  2    T   1
#    5  2 <NA>   0
#    6  3    T   1
#    7  4    R   0

预期输出:
data.frame(ID = c(1,2,3,4),
           prod = c("R","R","T","R"),
           bad = c(0,0,1,0))


    #  ID prod bad
   # 1  1    R   0
   # 2  2    R   0
   # 3  3    T   1
   # 4  4    R   0

我想要的输出是,对于同时存在 prod 或 NA 的 ID,只保留带有 prod R 的行,但如果只有一个 prod 则保留该行,尽管 prod 。

最佳答案

使用 dplyr 我们可以使用 filter 来选择 prod == "R" 所在的行,或者如果组中只有一行,则选择该行。

library(dplyr)

check1 %>%
  group_by(ID) %>%
  filter(prod == "R" | n() == 1)

#     ID prod    bad
#  <dbl> <fct> <dbl>
#1     1 R         0
#2     2 R         0
#3     3 T         1
#4     4 R         0

关于r - 保持数据框中的某些行有条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55999890/

10-12 17:35