我有一个数据框,看起来像这样:
tt1 <- structure(list(sjlid = c("SJL1527107", "SJL1527107", "SJL1527107",
"SJL1527107", "SJL1527107"), condition = c("Abnormal_glucose_metabolism",
"Abnormal_glucose_metabolism", "Abnormal_glucose_metabolism",
"Abnormal_glucose_metabolism", "Abnormal_glucose_metabolism"),
grade = c(NA, NA, NA, NA, NA), ageevent = c(58.8352421588442,
62.1366120218579, 64.4872969533648, 68.9694887341867, 70.9612695561045
)), row.names = 72:76, class = "data.frame")
我需要运行以下代码:
library(dplyr)
tt1 %>% group_by(condition) %>% top_n(1, grade) %>% top_n(1, ageevent)
当有多行(如tt1)时,该代码可以工作,但如果只有一行(如下面的tt2
),它就无法给出特定的行.例如,如果我的数据框是这样的:
tt2 <- structure(list(sjlid = "SJL1527107", condition = "Abnormal_glucose_metabolism",
grade = NA, ageevent = 58.8352421588442), row.names = 72L, class = "data.frame")
tt2 %>% group_by(condition) %>% top_n(1, grade) %>% top_n(1, ageevent)
一无所获
# A tibble: 0 x 4
# Groups: condition [0]
# ... with 4 variables: sjlid <chr>, condition <chr>, grade <lgl>, ageevent <dbl>
相反,我希望它返回这一行,因为这是唯一一行.
sjlid condition grade ageevent
72 SJL1527107 Abnormal_glucose_metabolism NA 58.8352421588442