我在 R 中有一个数据框,我想删除某些符合特定条件的行。我该怎么做 ?
我曾尝试使用 dplyr
和 ifelse
但我的代码没有给出正确答案
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/