【问题标题】:Adding new row in tapply function dataframe在 tapply 函数数据框中添加新行
【发布时间】:2016-08-23 15:08:02
【问题描述】:

我有根据我的情况计算计数的函数。而且我需要在表格末尾获取每列的总计数。这些是我尝试过的代码,

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

【问题讨论】:

  • @Zheyuan Li - 是的,这就是这里的问题。

标签: r function rbind


【解决方案1】:

sample 函数用于生成随机数。

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

首先创建所有您想要突出显示的值,重复任意多次。

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

然后对您的选择进行抽样而不替换:

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

【讨论】:

  • 在这种情况下,只需 sample(vals) 就足够了。
  • 确实如此,但很高兴看到这些选项是如何工作的。问题的关键是replace = FALSE,所以我已经明确指出,即使这是默认设置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 2018-02-09
  • 1970-01-01
  • 2018-12-02
  • 2020-04-27
相关资源
最近更新 更多