2014-02-25 105 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