2015-09-11 66 views
1

Im ScaleR/RevoR新增功能 - 我有一個.xdf數據集,它有400多個「零件」,每個零件有70000個數值....所以數據集相當大> 4000萬行。 我想使用RevoR給我中位數&模式的每個'部分'...我可以得到意味着& std dev使用rxSummary ..?但是如何計算模式&的中位數?使用Revolution R/ScaleR創建彙總統計信息

此外,一旦我有一個彙總的.xdf文件400+行長的住房部分,模式&中間..如何將它轉換回內存中的數據幀..?我一直在試圖rxReadXdf和我一直都收到此錯誤:

在rxLocateFileInternal(文件,pathsToSearch,文件系統,isOutFile = isOutFile錯誤,:不是在路徑中找到 總和;工作dir是:/ seamnt/sasdata階段。/RStudio /工作區/ MYNAME

任何幫助,將不勝感激.. 保羅。

回答

4

此刻,你本身不能得到rxCuberxSummary模式和中位數。

一種解決方法是由你分割你的數據集r'部分',將每個部分轉換爲數據幀,然後使用標準R函數獲取模式/中值。該代碼將是這個樣子:

# split the data by 'part' variable (which has to be a factor) 
xdfList <- rxSplit(baseXdf, outFilesBase="base", splitByFactor="part") 

smry <- rxExec(function(xdf) { 
     df <- rxImport(xdf) 
     # median of a numeric variable 
     xmed <- median(df$x) 
     # mode of a factor variable 
     ftab <- table(df$f) 
     fmode <- names(ftab)[which.max(ftab)] 
     data.frame(part=as.character(df$part), xmed=xmed, fmode=fmode) 
    }, xdf=rxElemArg(xdfList)) 

smry <- do.call(rbind, smry) 

或者,如果你有dplyrXdf package,您可以利用dplyr::summarise計算中位數(如果不是模式),爲您提供:

baseXdf %>% group_by(part) %>% 
    summarise(xmed=median(x)) 

免責聲明:我是dplyrXdf的作者。