我想知道如何获得每列包含两个最高值的I。
id <- c("A", "B", "C", "D","E")
a <- c(1,3,4,5,NA)
b <- c(1,NA,NA,5,9)
c <- c(NA,3,4,5,3)
d <- data.frame(id,a,b,c)
d想要的输出
column a
id=C, D
column b
id = D, E
column c
id=D, E发布于 2021-03-18 21:13:22
在使用sapply的base R中:
sapply(d[-1], function(x) toString(head(d$id[order(-x)], 2)))
# a b c
#"D, C" "E, D" "D, C" 这可以在dplyr中写成:
library(dplyr)
d %>% summarise(across(a:c, ~toString(head(id[order(-.)], 2))))发布于 2021-03-19 00:20:54
我们可以使用collapse中的dapply,这样会更快
library(collapse)
dapply(d[-1], function(x) paste(d$id[order(-x)][1:2], collapse=", "))
# a b c
#"D, C" "E, D" "D, C" https://stackoverflow.com/questions/66691778
复制相似问题