Подмножество строк с несколькими условиями - PullRequest
0 голосов
/ 19 декабря 2018

Я хотел бы создать фрейм данных, в котором для каждой метки будет задана строка с наибольшим значением в столбце высоты для каждой идентификационной информации образца, которая включает в себя 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))

Спасибо!

1 Ответ

0 голосов
/ 19 декабря 2018

Использование 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 
...