在tapply函数数据框

时间:2016-08-23 15:08:02

标签: r function rbind

我有根据我的条件计算计数的功能。我需要在表格的末尾获得每列的总计数。这些是我试过的代码,

t1<- doCounts1(AE_subset$Disp_code,AE_subset$FY, "Count of Attendances")

doCounts1<- function(var1,var2,varname,fun=NULL) {

  if (is.null(fun)) {
    a1<- as.data.frame.matrix(table(var1,var2))
  } else {
    a1<- as.data.frame.matrix(tapply(testvar,list(var1,var2),FUN=fun,na.rm=TRUE))
  }

  a1<- rownames_to_column(a1,var=varname)

  a1$FY3PR<- a1$FY3*proRata

  if (!is.null(fun))
    if (fun=="mean")
      a1$FY3PR<- a1$FY3

  **a1<- a1 %>% replace(., is.na(.), 0)
  a1<- rbind(a1,c("Total",as.numeric(colSums(a1[,2:4]))))**


  return(a1)
}

我的输出表类似于Var1 FY1,FY2,FY3,FY3PR。 我的预期输出如, Var1 FY1 FY2 FY3 FY3PR 1 20 30 40 80 2 40 50 10 20 总计60 80 50 100
所以,除了我的rbind代码(用粗体标记)之外,一切正常。我替换了所有NA&lt; - 0然后计算了我的总计数。总列数。 它不适用于我的功能。 有人有想法实现这个目标吗?

1 个答案:

答案 0 :(得分:2)

sample函数用于生成随机数。

通过将replace参数保留为FALSE,您可以准确指定要在随机排序中显示的值。

首先创建您想要的所有值,并根据需要重复多次。

vals <- rep(c("A", "B", "C"), each = 4L)

然后选择您的选择而不替换:

rsample <- sample(vals, 12L, replace = FALSE)