r - R - 如果满足其他列中的特定值,则删除所有后续 ID 行
问题描述
我有一个长格式的数据框,每个 id 包含多个条目。我还有一个条件列,它可以是“应用条件”、“控制条件”或 NA。每个 id 至少有一个“应用条件”或“控制条件”条目,但通常其余的都是 NA。现在我需要过滤掉所有属于 app 条件的 id 行。所以我需要类似的东西:如果条件 == id 5 的“应用条件”,删除 id 5 的所有行。
我的 df 看起来像这样:
ID | 健康)状况 | …… |
---|---|---|
一个 | 应用条件 | |
一个 | 不适用 | |
一个 | 不适用 | |
乙 | 控制条件 | |
乙 | 不适用 | |
乙 | 控制条件 | |
C | 不适用 | |
C | 应用条件 | |
D | 不适用 | |
D | 控制条件 |
我想保留所有至少有一个“控制条件”条目的 ID。所以基本上是这样的:
ID | 健康)状况 | …… |
---|---|---|
乙 | 控制条件 | |
乙 | 不适用 | |
乙 | 控制条件 | |
D | 不适用 | |
D | 控制条件 |
到目前为止,我的方法是使用 dplyr
df <- df %>%
group_by(id) %>%
filter(any(condition != "App condition")|is.na(condition))
但这也仍然返回属于应用条件的 ID,只是删除了这些行,以便相同 ID 的 NA 行仍然保留在数据框中。
有人可以帮忙吗?
非常感谢!
解决方案
我做过类似的事情
df = as.data.frame(cbind(c('a','a','a','b','b','b','c','c','d','d'),c('AC',NA,NA,'CC',NA,'CC',NA,'AC',NA,'CC')))
df = df[-which(df$V1%in%df[which(df$V2=='AC'),'V1']),]
后来看起来像这样
V1 V2
4 b CC
5 b <NA>
6 b CC
9 d <NA>
10 d CC
在您的情况下,只需用 ID 替换 V1 并用条件替换 V2 :)
希望它有所帮助
推荐阅读
- php - 使用 NGINX 作为 apache 的反向代理时,Wordpress 永久链接返回 404
- php - PHP会话在页面刷新时不起作用
- vba - VBA 宏在保持顺序的同时查找特定字符串
- mysql - 设置 ODBC 数据源以连接局域网上的 MySQL 数据库
- python - 使用 AWS Glue ETL 将多个嵌套数组取消嵌套到单独的行中
- performance - AWS Elastic Beanstalk 运行状况检查偶尔失败
- python - 将轮廓另存为图像
- r - R Shiny:在 Shiny 中使用 addDrawToolbar 时传单地图变灰
- python - 如何用蓝色为 RGB 图像着色?
- javascript - 解析字符串并根据值创建数组