r - 是否有任何 R 函数可以为类别类型数据交换行?
问题描述
我有一个大致如下的数据框:
X Cat Nam Val
1 Total Total 102012
2 Car A 12312
3 Car B 22222
4 Car Total 34534
5 Bike C 1000
6 Bike Total 1000
我希望它看起来像:
X Cat Nam Val
1 Car Total 34534
2 Car A 12312
3 Car B 22222
4 Bike Total 1000
5 Bike C 1000
6 Total Total 102012
有没有更简单的方法来重新排列,这取决于可能有更多的类别?
解决方案
您可以根据您想要数据的顺序分配因子水平。
例如,在Cat
列中,您希望'Total'
值排在最后,因此将其保留在最后levels
,其余的保留在开头。在Nam
列中你想Total
成为第一所以保持第一。安排因子水平后,您可以order
在这 2 列中获取数据。
使用基础 R,您可以这样做:
df <- transform(df,
Cat = factor(Cat, levels = unique(c(Cat[Cat != 'Total'], 'Total'))),
Nam = factor(Nam, levels = unique(c('Total', Nam))))
df[with(df, order(Cat, Nam)), ]
# X Cat Nam Val
#4 4 Car Total 34534
#2 2 Car A 12312
#3 3 Car B 22222
#6 6 Bike Total 1000
#5 5 Bike C 1000
#1 1 Total Total 102012
推荐阅读
- go - 为什么 io.EOF 不是常数?
- ansible - 检测 Ansible 故障的模式
- c# - c# 使用 Google Contacts API 添加联系人
- python - 在 Python 中使用 if 语句创建一个新列表
- javascript - textAlign right不适用于material-ui中的自定义垂直标签标签
- java - 如何在 gradle build 期间更改配置文件?
- python - 基于groupby添加列
- angular - Angular Routes not rendering child components, instead render parent component
- sql - 在同一列上具有多个 Group BY 的一个 select 语句
- c++ - prvalues的cv-qualifications (revisited)