R 根据数据表中的“因子”列对每组行重新排序
我有一个R 根据数据表中的“因子”列对每组行重新排序,r,sorting,data.table,R,Sorting,Data.table,我有一个数据表如下 ds <- data.table(ID = c(1,1,1,1,1,2,2,2,2,2), Month = c("Jan", "Feb", "Mar", "Apr", "May", "Jan", "Feb", "Mar", "Apr", "May"), val = c(1,2,3,4,5,6,7,8,9,10)) ds ID Month val 1: 1 Jan 1 2: 1 F
数据表
如下
ds <- data.table(ID = c(1,1,1,1,1,2,2,2,2,2),
Month = c("Jan", "Feb", "Mar", "Apr", "May", "Jan", "Feb", "Mar", "Apr", "May"),
val = c(1,2,3,4,5,6,7,8,9,10))
ds
ID Month val
1: 1 Jan 1
2: 1 Feb 2
3: 1 Mar 3
4: 1 Apr 4
5: 1 May 5
6: 2 Jan 6
7: 2 Feb 7
8: 2 Mar 8
9: 2 Apr 9
10: 2 May 10
我要每组,月份顺序为:4月、5月、1月、2月、3月
如何实现这一点?我们可以使用
I
中的订单,方法是将“月”转换为因子,并在自定义订单中指定级别
ds[order(factor(Month, levels = c("Apr", "May", "Jan", "Feb", "Mar"))), .SD,ID]
# ID Month val
# 1: 1 Apr 4
# 2: 1 May 5
# 3: 1 Jan 1
# 4: 1 Feb 2
# 5: 1 Mar 3
# 6: 2 Apr 9
# 7: 2 May 10
# 8: 2 Jan 6
# 9: 2 Feb 7
#10: 2 Mar 8
或者另一个选项是match
ds[order(match(Month, c("Apr", "May", "Jan", "Feb", "Mar"))), .SD,ID]
我们也可以使用month.abb,即month.abb[c(4:5,1:3)]
代替c(“Apr”、“May”、“Jan”、“Feb”、“Mar”)
我们可以通过转换i
中的订单到系数
,并在自定义顺序中指定级别
ds[order(factor(Month, levels = c("Apr", "May", "Jan", "Feb", "Mar"))), .SD,ID]
# ID Month val
# 1: 1 Apr 4
# 2: 1 May 5
# 3: 1 Jan 1
# 4: 1 Feb 2
# 5: 1 Mar 3
# 6: 2 Apr 9
# 7: 2 May 10
# 8: 2 Jan 6
# 9: 2 Feb 7
#10: 2 Mar 8
或者另一个选项是match
ds[order(match(Month, c("Apr", "May", "Jan", "Feb", "Mar"))), .SD,ID]
我们也可以使用month.abb,即month.abb[c(4:5,1:3)]
来代替c(“四月”、“五月”、“一月”、“二月”、“三月”)
相关职位:相关职位: