Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据给定列表对数据集进行排序_R_Sorting_Data.table - Fatal编程技术网

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对象。