R编程 - 找到最低值

时间:2015-02-24 12:49:07

标签: r

我刚开始学习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

1 个答案:

答案 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))