首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪些ids每列包含最高的两个值

哪些ids每列包含最高的两个值
EN

Stack Overflow用户
提问于 2021-03-18 21:09:44
回答 2查看 31关注 0票数 0

我想知道如何获得每列包含两个最高值的I。

代码语言:javascript
复制
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

想要的输出

代码语言:javascript
复制
    column a
    id=C, D
    column b
    id = D, E
    column c
    id=D, E
EN

回答 2

Stack Overflow用户

发布于 2021-03-18 21:13:22

在使用sapply的base R中:

代码语言:javascript
复制
sapply(d[-1], function(x) toString(head(d$id[order(-x)], 2)))

#     a      b      c 
#"D, C" "E, D" "D, C" 

这可以在dplyr中写成:

代码语言:javascript
复制
library(dplyr)
d %>% summarise(across(a:c, ~toString(head(id[order(-.)], 2))))
票数 1
EN

Stack Overflow用户

发布于 2021-03-19 00:20:54

我们可以使用collapse中的dapply,这样会更快

代码语言:javascript
复制
library(collapse)
dapply(d[-1], function(x) paste(d$id[order(-x)][1:2], collapse=", "))
#     a      b      c 
#"D, C" "E, D" "D, C" 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66691778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档