R-修改tapply函数中的级别顺序

R-修改tapply函数中的级别顺序,r,dataframe,tapply,R,Dataframe,Tapply,我有如下数据 nums r a 1 3 210 0 4 6 3891 1 9 8 891 1 1 3 321 1 8 1 32 0 etc etc etc 我想计算一些东西,并想知道是否有人可以帮助提供以下代码 nums r a 1 3 210 0 4 6 3891 1 9 8 891 1 1 3 321

我有如下数据

nums      r     a
1 3     210     0
4 6     3891    1
9 8     891     1
1 3     321     1
8 1     32      0
etc     etc     etc
我想计算一些东西,并想知道是否有人可以帮助提供以下代码

nums      r     a
1 3     210     0
4 6     3891    1
9 8     891     1
1 3     321     1
8 1     32      0
etc     etc     etc
  • 每个
    nums
    值的平均
    a
    值(例如,上面,
    13
    的平均
    a
    0.5
    ),按最高平均
    a
    值排序。我认为
    tapply
    可以解决这个问题,但我不知道如何处理排序组件
  • 每个
    nums
    值的平均
    a
    值,按预定的
    nums
    顺序排序。例如,类似于
    taply(df$ac、df$nums、mean、orderBy=c(“13”、“46”、“81”等))
    。您可以假设我有一个涵盖所有可能
    nums
    值的排序

  • 使用
    tapply

    agg <- with(data, tapply(a, nums, FUN = mean))
    
    对于2,请执行以下操作:

    agg[predetermined.nums]
    
    agg[match(predetermined.nums, agg$nums), ]
    

    您还可以使用聚合:

    agg <- aggregate(a ~ nums, data, FUN = mean)
    
    对于2,请执行以下操作:

    agg[predetermined.nums]
    
    agg[match(predetermined.nums, agg$nums), ]
    

    对塔普利来说,2不起作用。对于聚合,#2起作用,但它作为数据帧输出,而不是作为tapply正常输出。很难说,因为您没有提供可复制的示例。。。你能自己想出来吗?这毕竟是一个简单的索引。也许对你来说很简单,但我对R有些陌生。你能重新格式化聚合方法的输出,使其看起来像tapply调用的输出吗?很可能你有一个因子,所以试试
    agg[as.character(predicted.nums)]
    。今后,请提供一个可复制的例子,并尝试给出比“它不起作用”更有用的反馈。可复制的例子:数据=数据。框架(nums=c(“1,2,3,4,2,2,2,4,3 2”),a=c(1,0,1,1));agg=聚合(a~nums,数据,FUN=平均值);agg[唯一(数据$nums)];