aggregate.data.frame中出错:参数的长度必须相同

aggregate.data.frame中出错:参数的长度必须相同,r,aggregate,R,Aggregate,我一直在犯这个错误,我不太清楚这是什么意思。我所有的变量名都是一致的,没有输入错误。我是不是遗漏了什么 代码 datNewagg <- aggregate (dataNew, by = list('x', 'y', 'z', 'a', 'ab'), FUN = mean) 假设它不是打字错误(数据框在您的调用中称为dataNew,但在错误中称为datNew),那

我一直在犯这个错误,我不太清楚这是什么意思。我所有的变量名都是一致的,没有输入错误。我是不是遗漏了什么

代码

datNewagg <- aggregate (dataNew, by = list('x', 'y', 'z', 'a', 'ab'), 
                                                             FUN = mean)  
假设它不是打字错误(数据框在您的调用中称为
dataNew
,但在错误中称为
datNew
),那么
x
y
z
a
ab
dataNew
中列的名称吗

有些函数(如)允许您指定它们直接处理的对象的列名。该函数没有,因此在
by
参数中列出的
dataNew
的任何列都需要特别提及。试试这个:

datNewagg <- aggregate(dataNew,
    by = list(
        x = dataNew$x,
        y = dataNew$y,
        z = dataNew$z,
        a = dataNew$a,
        ab = dataNew$ab),
    FUN = mean) 
datNewagg检查
class(dataNew)
。如果它不是data.frame,则我使用的
dataNew会出现此错误。
删除此错误的简单解决方案是将所有变量与其数据集名称一起写入,如“ds\u name$var\u name”。
我不确定您的案例中的数据集名称是什么,因此我将为您提供另一个类似的示例

curYearRev <-aggregate(hr$Year.Total, by = list(hr$Hospital_ID,hr$District_ID,hr$Instrument_ID) , FUN = sum)

curYearRev使用
data.frame
作为
by
参数对我有效 试试这个:

datNewagg <- aggregate (dataNew, by = dataNew[c('x', 'y', 'z', 'a', 'ab')],                                                             FUN = mean)

datNewagg当您将
与(…、聚合(…))一起使用时
不要将列名加引号

您是否可以输出准确的datafame?是否可以显示
aggregate
调用,因为它可能被错误地指定。t聚集(mtcars,列表(“am”),平均值)
也会出现类似错误。但是如果您像
aggregate(mtcars,list(mtcars$am),mean)那样指定它
aggregate(.~am,mean,data=mtcars)
一切正常
datNewagg ok,请查看上面关于指定聚合函数的注释。尝试
datNewagg
curYearRev <-aggregate(hr$Year.Total, by = list(hr$Hospital_ID,hr$District_ID,hr$Instrument_ID) , FUN = sum)
datNewagg <- aggregate (dataNew, by = dataNew[c('x', 'y', 'z', 'a', 'ab')],                                                             FUN = mean)