R 自定义排序=`
当我使用R 自定义排序=`,r,data.table,R,Data.table,当我使用by=对表进行操作时,生成的表的记录顺序与原始表中的记录顺序相同: dt1 <- fread( "colA,colB B,3 A,1 C,2 B,1 C,2 ") desired <- c('A', 'C', 'B') #> dt1[, mean(colB), by=colA] # colA V1 #1: B 2 #2: A 1 #3: C 2 dt1聚合完成后,您可以重新排序 dt1[,
by=
对表进行操作时,生成的表的记录顺序与原始表中的记录顺序相同:
dt1 <- fread(
"colA,colB
B,3
A,1
C,2
B,1
C,2
")
desired <- c('A', 'C', 'B')
#> dt1[, mean(colB), by=colA]
# colA V1
#1: B 2
#2: A 1
#3: C 2
dt1聚合完成后,您可以重新排序
dt1[, mean(colB), by=colA][order(desired),]
# colA V1
# 1: A 1
# 2: C 2
# 3: B 2
感谢阿伦解决了这个问题。您的表中有错误的空格。删除它们,然后您可以使用订单
(上图)或Arun的加入建议(下图)
查看原始数据:
dt1 <- fread(
"colA,colB
B,3
A,1
C,2
B,1
C,2
")
dput(dt1)
# structure(list(colA = c(" B", " A", " C", " B", " C" ...
# extra space ----- ^^^
dt1或者您可以按如下方式加入:dt1[,mean(colB),keyby=colA][(需要)]
。或者干脆dt1[,mean(colB),keyby=colA][desired]
(因为它是一个单字符列)。@Arun-当我运行它并在V1
中得到一列NA
时,这是因为他的dt1$colA
中有空格。执行dt1[,colA:=gsub(“,”,colA)]
,然后重试。感谢大家的解释,对于错误的样本数据表示抱歉
dt1 <- fread(
"colA,colB
B,3
A,1
C,2
B,1
C,2
")
dput(dt1)
# structure(list(colA = c(" B", " A", " C", " B", " C" ...
# extra space ----- ^^^