小编Not*_*iri的帖子

在因子上分割数据帧并应用函数

在R中,我想沿着因子变量分割数据帧,然后将函数应用于与该变量的每个级别有关的数据.我想在我的功能中完成所有这些.不知何故,数据没有被拆分?

我不理解将参数传递给嵌套在其他函数中的函数的所有细微差别.我最初尝试使用dplyr执行此操作,但无法将参数传递给嵌套在我的函数中的dplyr.

这是我的功能:

 myFun <- function(dat, strat.var, PSU, var1){
     strata <- as.character(unique(dat[, strat.var]))
     N.h <- length(strata)
     sdat <- with(dat, split(dat, strat.var))
     fun1 <- function(x){ length(unique(x[, PSU])) }
     fun2  <- function(x){ sum(tapply(x[, var1], x[, PSU],  mean)) }
     ns <- sapply(sdat, fun1)
     mns <- sapply(sdat, fun2)
     dfx <- data.frame(cbind(stratum=strata, ns=ns, mns=mns))
     return(list(N.h = N.h, out=dfx))
 }
Run Code Online (Sandbox Code Playgroud)

为了演示我使用的是warpbreaks数据,但是我的实际数据集有8个级别的"strat.var",并且嵌套在"PSU"的2到10级之间.

    myFun(dat=warpbreaks, strat.var="wool", PSU="tension", var1="breaks")
   # $N.h
   # [1] 2

   # $out
   #   stratum ns              mns
   # 1       A  3 84.4444444444444
   # 2       B  3 84.4444444444444 …
Run Code Online (Sandbox Code Playgroud)

r sapply dplyr

0
推荐指数
1
解决办法
1372
查看次数

标签 统计

dplyr ×1

r ×1

sapply ×1