gpt4 book ai didi

最小元素的行名

转载 作者:行者123 更新时间:2023-12-04 07:37:39 24 4
gpt4 key购买 nike

我有以下数据框:

d <- data.frame(a=c(1,2,3,4), b=c(20,19,18,17))
row.names(d) <- c("A", "B", "C", "D")
我想要另一个 data.frame,具有相同的列和 2 行,其中包含该列中 2 个最小元素的行名称。
在示例中,预期结果是:
# Expected results
exp <- data.frame(a=c("A", "B"), b=c("C","D"))

最佳答案

我们用 lapply 遍历列, order值,使用该索引对 n 进行子集化对应 row.names 'd',并用 data.frame 包裹

n <- 2
data.frame(lapply(d, function(x) sort(head(row.names(d)[order(x)], n))))
-输出
#  a b
#1 A C
#2 B D

R 4.1.0 ,我们也可以使用 |>用于链接函数的运算符(按顺序应用以便于理解)以及 \(x) - 用于 base R 中的 lambda 函数
# //  ordered the column values
# // get corresponding row names
lapply(d, \(x) row.names(d)[order(x)] |>
head(n) |> # // get the first n values
sort()) |> # // sort them
data.frame() # // convert the list to data.frame
# a b
#1 A C
#2 B D

或使用 dplyr
library(dplyr)
d %>%
summarise(across(everything(),
~ sort(head(row.names(d)[order(.)], n))))
# a b
#1 A C
#2 B D

关于最小元素的行名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67655280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com