R 根据给定列表对数据集进行排序
我有一个数据集R 根据给定列表对数据集进行排序,r,sorting,data.table,R,Sorting,Data.table,我有一个数据集dt,我想按照listCountriesOrdered和col按字母顺序排序 library(data.table) countries<- c("AT","BE","BG","DE","CY") listCountriesOrdered <- c("BE","BG","DE","AT",
dt
,我想按照listCountriesOrdered
和col
按字母顺序排序
library(data.table)
countries<- c("AT","BE","BG","DE","CY")
listCountriesOrdered <- c("BE","BG","DE","AT","CY")
col <- c("A","C","B")
dt <- CJ(countries, col)
库(data.table)
国家/地区您可以使用匹配:
dt[order(match(countries,listCountriesOrdered),col)]
countries col
1: BE A
2: BE B
3: BE C
4: BG A
5: BG B
6: BG C
7: DE A
8: DE B
9: DE C
10: AT A
11: AT B
12: AT C
13: CY A
14: CY B
15: CY C
在R中执行此操作的标准工具是:
dt[, countries := factor(countries, levels = listCountriesOrdered)]
setorder(dt, countries)
# countries col
# 1: BE A
# 2: BE B
# 3: BE C
# 4: BG A
# 5: BG B
# 6: BG C
# 7: DE A
# 8: DE B
# 9: DE C
# 10: AT A
# 11: AT B
# 12: AT C
# 13: CY A
# 14: CY B
# 15: CY C
CJ的功能是什么?它来自哪个包?@bird它来自data.table,他们正在创建一个示例对象dt。您尝试排序的数据集是什么?提供您尝试合并的第二个data.table对象。