r - 在增加和减少列的两个条件下对 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
, )。两者都应该增加。2011
2012
Region
Year
我试过:df_Filtered[ order(df_Filtered$Region, (df_Filtered$Year)) , ]
当我在 Rstudio 中以文本形式获得输出时,它可以工作,但是当我尝试重新映射它时,它似乎并没有改变数据框的顺序:
df_Filtered <- df_Filtered[ order(df_Filtered$Region, (df_Filtered$Year)) , ]
有没有办法改变数据框本身的行顺序?我想稍后将它导出到 LaTex 以制作漂亮的表格,这就是顺序很重要的原因。
解决方案
使用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%
推荐阅读
- javascript - Promise.all 并发或并行运行
- javascript - 单击按钮,然后使用 Google Apps 脚本进行抓取
- typescript - 为什么 Typescript 项目引用使用父 tsconfig 文件而不是引用自己的 tsconfig 文件?
- websocket - 如何无法在 websockets 中检测到客户端断开连接
- python - 是否可以恢复 pipenv 虚拟环境
- java - 我如何使用 OpenImaj 只听屏幕的两个特定区域
- java - 将char放入int数组是什么意思,是ASC号吗?
- azure - AADB2C 嵌入式密码重置:未触发本地帐户发现
- tensorflow - 通过回调 api 动态更新数据集过滤器中使用的 tensorflow 变量
- python - 操作系统() | 对先前存在的命令提示符窗口执行命令 | Python