Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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_Data.table - Fatal编程技术网

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 ----- ^^^