r - 具有多个条件的子集行
问题描述
我想创建一个数据框,通过样本识别信息(包括 Sample_Type 和 Concentration)对每个标记的高度列中具有最大值的行进行子集化。我在下面粘贴了一个示例数据框。此示例中的最终 df 应包含第 2-4 行。
structure(list(Marker = c("A", "A", "B", "B", "B", "B", "C",
"A", "A", "A"), Height = c(40L, 61L, 38L, 33L, 49L, 114L, 152L,
108L, 108L, 50L), Sample_Type = c("NTC", "NTC", "NTC", "NTC",
"NTC", "NTC", "NTC", "CEPH", "CEPH", "CEPH"), Concentration = c(100L,
100L, 100L, 100L, 100L, 100L, 100L, 100L, 50L, 50L), PCR_Protocol =
c("Current_PCR",
"Current_PCR", "Current_PCR", "Current_PCR", "Current_PCR", "Current_PCR",
"Current_PCR", "Current_PCR", "Current_PCR", "Current_PCR")), class =
"data.frame", row.names = c(NA,
-10L))
谢谢!
解决方案
使用 dplyr,过滤最大值:
library(dplyr)
df1 %>%
group_by(Marker) %>%
filter(max(Height) == Height)
# # A tibble: 3 x 6
# # Groups: Marker [3]
# Marker Size Height Sample_Type Concentration PCR_Protocol
# <chr> <dbl> <int> <chr> <int> <chr>
# 1 A 79.2 61 NTC 100 Current_PCR
# 2 B 84.2 38 NTC 100 Current_PCR
# 3 C 99.7 33 NTC 100 Current_PCR
推荐阅读
- haskell - 从 do 块中的多个字符串返回单个字符串
- gps - requestLocation() 无法提供有关手表硬件的课程,但可以在 Sim 中工作
- java - ArrayList .add 方法在线程中不起作用
- big-o - 破解编码面试的摊销时间
- python - 一些迭代后,从 kickstarter 抓取数据的 Python 代码不起作用
- c++ - 如何使用 SDL2 在 C++ 中将框呈现到屏幕上?
- javascript - 如何收听 Telegram Bot 错误?(谷歌应用脚本 + 网络钩子)
- php - mail() 错误地向 cPanel 默认帐户发送电子邮件
- javascript - 无法在导航栏中水平对齐菜单项
- docker - 在 Ubuntu 虚拟机中访问 Docker 容器端口