gpt4 book ai didi

r - 根据另一列中的最大值选择一个值

转载 作者:行者123 更新时间:2023-12-04 05:33:08 26 4
gpt4 key购买 nike

我不明白为什么我找不到解决方案,因为我觉得这是一个非常基本的问题。那就需要求助了。我想按月重新排列空气质量数据集,每个月的最大温度值。另外我想找到每个月最高气温对应的日子。这样做的最懒惰(代码方面)的方法是什么?

我试过以下但没有成功:

require(reshape2)
names(airquality) <- tolower(names(airquality))
mm <- melt(airquality, id.vars = c("month", "day"), meas = c("temp"))

dcast(mm, month + day ~ variable, max)
aggregate(formula = temp ~ month + day, data = airquality, FUN = max)

我追求的是这样的:
month day temp
5 7 89
...

最佳答案

前段时间关于懒惰是好是坏的讨论颇多。 Anwyay,这很短,很自然地写和读(并且对于大数据来说很快,所以你以后不需要更改或优化它):

require(data.table)
DT=as.data.table(airquality)

DT[,.SD[which.max(Temp)],by=Month]

Month Ozone Solar.R Wind Temp Day
[1,] 5 45 252 14.9 81 29
[2,] 6 NA 259 10.9 93 11
[3,] 7 97 267 6.3 92 8
[4,] 8 76 203 9.7 97 28
[5,] 9 73 183 2.8 93 3
.SD是每个组的数据子集,您只需要其中具有最大 Temp 的行,iiuc。如果您需要行号,则可以添加。

或者获取最大值绑定(bind)的所有行:
DT[,.SD[Temp==max(Temp)],by=Month]

Month Ozone Solar.R Wind Temp Day
[1,] 5 45 252 14.9 81 29
[2,] 6 NA 259 10.9 93 11
[3,] 7 97 267 6.3 92 8
[4,] 7 97 272 5.7 92 9
[5,] 8 76 203 9.7 97 28
[6,] 9 73 183 2.8 93 3
[7,] 9 91 189 4.6 93 4

关于r - 根据另一列中的最大值选择一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10705290/

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