嘿,我刚刚开始学习R。我想问一个问题,如何在一个数据帧中基于两个向量的组合来寻找向量中的最大值。例如,我要查找五个最高平均价格。我有一个约7列的数据框,其中3列是平均价格,城市和年份。该年份显然是经常性的,范围从2000年到2009年。该数据在不同的列和行中还具有不同的NA。
The Data Frame looks something like this:
avgprice year city
12 2000 Jersey City
45 2001 Hoboken
NA 2000 Hoboken
34 2000 evanston
67 2001 abilene
89 2001 elizabeth
45 2000 delhi
98 2000 delhi
I want the answer to look like
year city avgprice
2000 jersey city 12
2000 evanston 34
2000 delhi 98
2001 hoboken 45
2001 elizabeth 89
2001 abilene 67
我尝试使用以下代码,但我想弄乱了一些东西。我尝试使用按年份拆分创建df,然后使用聚合函数。
df<-split(tx.house.sales, tx.house.sales$year)
re<-aggregate(avgprice~city, df, FUN=max)
谢谢 :)
这里有一些简单的选项(假设df
是原始数据(未拆分))。之所以能够aggregate
顺利进行,是因为它具有na.action = na.omit
默认设置,可以满足您的确切需求。
aggregate(avgprice ~ city + year, df, max)
# city year avgprice
# 1 delhi 2000 98
# 2 evanston 2000 34
# 3 Jersey City 2000 12
# 4 abilene 2001 67
# 5 elizabeth 2001 89
# 6 Hoboken 2001 45
或者
library(data.table)
setDT(na.omit(df))[, .(avgprice = max(avgprice)), keyby = .(year, city)]
或者
library(dplyr)
na.omit(df) %>%
group_by(city, year) %>%
summarise(avgprice = max(avgprice))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句