我有以下数据集:
A1 | A2 | A3 | A4 | A5 | A6 | A7 |
---|---|---|---|---|---|---|
-1.2650612 | -0.6868529 | -0.4456620 | 1.2240818 | 0.3598138 | 0.4007715 | 0.1106827 |
colnames<-c(paste0(1:7,"A"))
set.seed(123)
values<-c(rnorm(7))
我希望能够创建一个代码,该代码将找到前 3 列(A1、A2、A3)内找到的最高值(按行)并写入相应的列名称,对接下来的 2 列重复相同的操作,其余 2 列(A6,A7)相同,如果所有值都相同(也许会发生这种情况,只需写下组中第一列的名称)
我想要的输出是:
A1,A2,A3 | A4,A5 | A6,7 |
---|---|---|
A3 | A4 | A5 |
接下来我可以尝试什么?
这是一种选择
library(dplyr)
library(tibble)
library(tidyr)
pivot_longer(df1, everything()) %>%
group_by(group = rep(1:3, c(3, 2, 2))) %>%
summarise(name1 = name[which.max(value)],
name2 = toString(name)) %>%
select(name2, name1) %>%
deframe %>%
as_tibble_row
-输出
# A tibble: 1 × 3
`A1, A2, A3` `A4, A5` `A6, A7`
<chr> <chr> <chr>
1 A3 A4 A6
df1 <- structure(list(A1 = -1.2650612, A2 = -0.6868529, A3 = -0.445662,
A4 = 1.2240818, A5 = 0.3598138, A6 = 0.4007715, A7 = 0.1106827),
class = "data.frame", row.names = c(NA,
-1L))