我刚开始学习R.我想知道如何在列中找到其他列中唯一值的最低值。例如,在这种情况下,我想知道每年最低的平均价格。 我有一个大约7列的数据框,其中2列是平均价格和年份。这一年显然是从2000年到2009年的经常性范围。数据在不同的栏目中也有不同的NA。 在这方面我对运行循环或其他任何东西的想法都很少。 谢谢 :) 我的数据集看起来像这样: avgprice年 332 2002 NA 2009 5353 2004 1234 NA等。 打破我的问题,找到2000 - 2004年的前五个最低值。
s<-subset(tx.house.sales,na.rm=TRUE,select=c(avgprice,year)
s2<-subset(s,year==2000)
s3<-arrange(s2)
tail(s2,5)
我知道代码失败了。我想首先根据年份和平均价格对我的数据框进行子集化。然后每年对2000-2004进行排序。安排它并使用tail()打印最低的五个。但是我也想忽略NAs
答案 0 :(得分:1)
你可以尝试
aggregate(averageprice~year, df1, FUN=min)
如果你需要每“年”获得5个最低“平均价格”
library(dplyr)
df1 %>%
group_by(year) %>%
arrange(averageprice) %>%
slice(1:5)
或者您可以使用rank
代替arrange
df1 %>%
group_by(year) %>%
filter(rank(averageprice, ties.method='min') %in% 1:5)
这也可以使用aggregate
完成,但第二列将是一个列表
aggregate(averageprice~year, df1, FUN=function(x)
head(sort(x),5), na.action=na.pass)
set.seed(24)
df1 <- data.frame(year=sample(2002:2008, 50, replace=TRUE),
averageprice=sample(c(NA, 80:160), 50, replace=TRUE))