簡體   English   中英

在rxSummary中計數不重復

[英]Count distinct in a rxSummary

我想在.xdf文件中按var1 count var2分組的不同值,

我嘗試過這樣的事情

 myFun <- function(dataList) {
    UniqueLevel <<- unique(c(UniqueLevel, dataList$var2))
    SumUniqueLevel <<- length(UniqueLevel)
    return(NULL)
    }

rxSummary(formula = ~ var1,
data = "DefModelo2.xdf",
transformFunc = myFun,
transformObjects = list(UniqueLevel = NULL),
removeZeroCounts = F)

先感謝您

編輯:

可能使用RevoPemaR是更快的方法

另一種選擇是使用rxCrossTabs 這樣,您就可以得到兩個因子的交叉表,並且您可以僅對非零條目進行計數,以根據其中一個因子確定唯一值。

censusWorkers <- file.path(rxGetOption("sampleDataDir"), "CensusWorkers.xdf")
censusXtabAge <- rxCrossTabs(~ F(age):F(wkswork1), data = censusWorkers, 
                             removeZeroCounts = FALSE, returnXtabs = TRUE)
apply(censusXtabAge != 0, MARGIN = 1, sum)

除以var1 ,然后為每個組計算var2的唯一值。 假設var1var2是因素,如果不是,則必須首先運行rxFactors

xdflst <- rxSplit(xdf, splitByVars="var1", varsToKeep=c("var1", "var2"))

out <- rxExec(function(grp) {
        var1 <- head(grp, 1)$var1
        var2 <- rxDataStep(grp, varsToKeep="var2")$var2
        data.frame(var2, distinct=length(unique(var2)))
    },
    grp=rxElemArg(xdflst))

do.call(rbind, out)

或者,您可以獲取我的dplyrXdf軟件包並使用dplyr group_by / summarise管道(基本上完成上述所有操作,並在必要時包括轉換為因數):

xdf %>% group_by(var1) %>%
    summarise(distinct=n_distinct(var2),
              .rxArgs=list(varsToKeep=c("var1", "var2")))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM