2014-02-25 70 views
0

我试图获得由另一个变量拆分变量的length(x)值。基本频率值,按组拆分

aggregate(ssfia$Correlation_Abs,ssfia$Disorder,length,na.rm=TRUE) 

不过,我得到一个错误信息:

>Error in FUN(X[[1L]], ...) : 
    2 arguments passed to 'length' which requires 1 

看来,length(x)不能使用有像“的意思是”或“SD”即可。有一个函数可以计算嵌套在聚合中的行吗?

在此先感谢!

+0

有'长度'中没有'na.rm'参数。 – Henrik

回答

0

以下情况如何?

  1. 分裂第一向量到由第二一个来确定亚类:

    cls <- split(ssfia$Correlation_Abs, ssfia$Disorder) 
    
  2. 计数NA观察多少非落入每个子类:

    sapply(cls, function(dat) sum(!is.na(dat))) 
    
+0

太棒了,工作!如果你不介意解释某些东西 - 为什么“sum”在这种情况下返回一个频率计数,但是在任何其他情况下都是实际的总和? (也就是说,我试着把原来的聚合函数中的“sum”放在前面,并且返回了一个和)。 – smgmu

+0

'!is.na(dat)'返回一个逻辑向量。 'sum()'接受一个数字向量。因此,逻辑矢量应该被转换为数字。规则是:“TRUE == 1”和“FALSE == 0”。所以'sum(!is.na(dat))'只是计算向量中有多少个TRUE元素(例如我们有'TRUE + TRUE + FALSE + TRUE == 3',因为'1 + 1 + 0 + 1 == 3')。 – gagolews