Может быть, нам понадобится
library(dplyr)
d %>%
group_by(study.name) %>%
slice(1)
Или в base R
после группировки по параметру 'study.name', получите первую строку, указав na.action = NULL
, поскольку значение по умолчанию - na.omit
который может опустить любую строку, имеющую NA
в любом из столбцов
aggregate(.~ study.name, d, head, 1, na.action = NULL)
Если мы хотим подмножество столбцов
nm1 <- names(which(!colSums(!do.call(rbind, by(d[-1], d$study.name,
FUN = function(x) lengths(sapply(x, unique)) == 1)))))
unique(d[c("study.name", nm1)])