首页 > 解决方案 > 在增加和减少列的两个条件下对 r 中的数据框进行排序

问题描述

我的数据看起来像这样df_Filtered(其中过滤代表特定国家/地区的 df):

Year Region    Percentage_of_national_sell
2012 Berlin    84%
2010 Hamburg   101%
2011 Stettin   98%
2012 Stettin   100%
2012 Hamburg   122%
2011 Berlin    111%
2010 Berlin    101%
2010 Stettin   87%
2011 Hamburg   58%

我想要做的是排序df_Filtered,以便我首先对其进行排序Region,然后按Year(以特定顺序开始,Berlin然后获取2010, )。两者都应该增加。20112012RegionYear

我试过:df_Filtered[ order(df_Filtered$Region, (df_Filtered$Year)) , ]当我在 Rstudio 中以文本形式获得输出时,它可以工作,但是当我尝试重新映射它时,它似乎并没有改变数据框的顺序:

df_Filtered <- df_Filtered[ order(df_Filtered$Region, (df_Filtered$Year)) , ]

有没有办法改变数据框本身的行顺序?我想稍后将它导出到 LaTex 以制作漂亮的表格,这就是顺序很重要的原因。

标签: rsortingdataframe

解决方案


使用sqldf

您的样本数据:

df=read.table(text="Year Region    Percentage_of_national_sell
          2012 Berlin    84%
          2010 Hamburg   101%
          2011 Stettin   98%
          2012 Stettin   100%
          2012 Hamburg   122%
          2011 Berlin    111%
          2010 Berlin    101%
          2010 Stettin   87%
          2011 Hamburg   58%",header=T)

代码:

library(sqldf)
sqldf("select * from df order by Region, Year")

(基础 R 解决方案)

df[order(df$Region,df$Year),]

输出:

Year  Region Percentage_of_national_sell
1 2010  Berlin                        101%
2 2011  Berlin                        111%
3 2012  Berlin                         84%
4 2010 Hamburg                        101%
5 2011 Hamburg                         58%
6 2012 Hamburg                        122%
7 2010 Stettin                         87%
8 2011 Stettin                         98%
9 2012 Stettin                        100%

推荐阅读