gpt4 book ai didi

r - 如何返回一列的行值,使得它们在另一列中的对应值是R中最小的n值

转载 作者:行者123 更新时间:2023-12-02 18:34:03 28 4
gpt4 key购买 nike

我有下面的 df。

df<-cbind(c("LA", "NY", "Rome"),c(1,1,2),c(0,1,0),c(0,1,2),c(1,3,4))
[city] [c1] [c2] [c3] [sum]
[1,] "LA" "1" "0" "0" "1"
[2,] "NY" "1" "1" "1" "3"
[3,] "Rome" "2" "0" "2" "4"

我想比较 sum 列中的值以找到两个最小值。(这里是 1,3 按升序排列)
然后以相同的顺序返回城市列中的相应值。
所以我想要的输出是: LA, NY

我可以获得行名(我不想要,但我不知道如何获得洛杉矶、纽约:

rownames(df$city[order(df$sum, decreasing = F),][1:2])[1:2]

最佳答案

问题中的数据集是一个矩阵(cbind默认返回一个矩阵,矩阵只能有一个类型。因此,整个数据集被转换为字符)。如果我们需要根据最后一列(第5列)提取第一列的'n'个元素,则提取第5列,转换为数字,使用order得到按升序排列值的索引,然后使用 head 获取 n 顺序索引并使用它来子集第一列

n <- 2
df[,1][head(order(as.numeric(df[,5])), n)]
[1] "LA" "NY"

as.data.frame(cbind 是错误的方式,因为列已经将类型更改为 character。最好使用 data.frame 直接

df1 <- data.frame(col1 = ..., col2 = .., col3 = ...)

关于r - 如何返回一列的行值,使得它们在另一列中的对应值是R中最小的n值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69038214/

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