我在 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/