r - 当值存在于至少一个行中时删除一组行
问题描述
我正在尝试使用 dplyr 过滤数据。如果某些行包含一个值,我想消除一整组行,那么应该删除一整组。
示例数据如下所示: 例如,变量“名称”包含一组 CE 10:0。该组的“SampleType”是“step”或“Blank”。如果组 CE 10:0 中的“SampleType”中存在值“Blank”,则应删除整个 CE 10:0-组。
因此,在此示例中,仅保留组 CE 10:3 和 CE 11:1。
我无法理解这个过滤功能,任何帮助将不胜感激。
fullname name intensity SampleType
step6-a-s CE 10:0 11997.1 step
step7-c-s CE 10:0 8752 step
step4-c-s CE 10:0 6969.9 step
Blank2-s CE 10:0 2231.1 Blank
step6-b-s CE 10:0 3275.6 step
step7-b-s CE 10:0 4485.4 step
step3-c-s CE 10:0 4191.6 step
Blank1-s CE 10:0 4349 Blank
step8-a-s CE 10:0 8838 step
step7-b-s CE 10:1 6155.3 step
step4-c-s CE 10:1 5899.9 step
Blank2-s CE 10:1 3098.6 Blank
step6-b-s CE 10:1 2945.2 step
step5-c-s CE 10:1 1207.2 step
Blank1-s CE 10:1 4173 Blank
step2-b-s CE 10:1 3219.4 step
step4-a-s CE 10:3 3658.2 step
step1-b-s CE 10:3 4070 step
step5-a-s CE 10:3 2776.4 step
step3-a-s CE 10:3 4821.6 step
step4-b-s CE 10:3 4145.9 step
step5-c-s CE 11:0 7056 step
step3-c-s CE 11:0 6367.5 step
step2-b-s CE 11:0 6426.9 step
step7-c-s CE 11:0 5133.9 step
Blank2-s CE 11:0 4006.3 Blank
step1-c-s CE 11:0 3791.7 step
step4-b-s CE 11:1 5183.7 step
step4-a-s CE 11:1 3549.5 step
step3-b-s CE 11:1 2822.9 step
step1-b-s CE 11:1 2495.7 step
解决方案
好的,我找到了一个更简单的解决方案:首先使用“空白”制作包含行中名称的向量,然后在第二步中使用该向量消除具有相应名称的组。也许不是最优雅的方法,但它有效
blanks_in_n_and_s_split <- n_and_s_split %>%
filter(SampleType == "Blank")
species_in_blank <- unique(blanks_in_n_and_s_split$name)
n_and_s_split_blankfiltered <- n_and_s_split %>%
filter(!name %in% species_in_blank)
推荐阅读
- kubernetes - 为元数据添加标签
- javascript - fetch 不应该运行 PHP 文件的内容吗?
- matlab - Octave:无法从另一个 .m 文件调用函数
- python - Pandas DataFrame 中的嵌套/递归 groupby 计数
- snowflake-cloud-data-platform - 使用子查询更新在雪花中不起作用
- c# - 如何为需要不同证书的 Fiddler 流量配置多个“ClientCertificate.cer”
- azure - 在 Azure Function 中访问 Azure Key Vault 机密
- graphql-java - GraphQL SPQR 无法按预期序列化 ZonedDateTime
- reactjs - 如何在重定向中将属性从父级传递给子级
- r - 有没有办法在不丢弃数据的情况下处理“无法分配大小向量”问题?