R中如何得到table,包括计数、相对频数、累积频数?

How to get table in R, including count, relative frequencies, and cumulative frequencies?

我使用 R Studio 已经很多年了,而且使用频率比任何其他软件都高,但现在我打算用 R 教授统计学,我意识到使用其他软件(如 STATA)可以更简单地完成一些任务。

有没有简单的方法在 R 中获取频率 table(包括计数、百分比和累积频率),就像我们在 STATA 中输入 tab [variable] 一样?

我遇到了这个 tidyverse 解决方案:

dataset <- tribble(
           ~var1, ~var2, ~var3, ~var4, ~var5,
           "1",   "1",   "1",   "a",   "d",
           "2",   "2",   "2",   "b",   "e",
           "3",   "3",   "3",   "c",   "f")

dataset %>%
      group_by(var1) %>%
      summarise(n = n()) %>%
      mutate(totalN = (cumsum(n)),
             percent = round((n / sum(n)), 3),
             cumpercent = round(cumsum(freq = n / sum(n)),3))

但是,很明显,教授本科生要复杂得多。难道没有更简单的方法,甚至是基本的 R 解决方案吗?理想情况下,我希望有一行代码,而不必先安装 5-10 个不同的包。

我不同意你关于本科生无法理解的说法。我不想将这个问题纳入教学策略,如果您认为 R 不适合您的课程水平,您是否应该使用 R。

你可以为他们提供这个功能,他们不需要理解(就像他们不需要理解来自 STATA 的函数一样)。

library(dplyr)
tab <- function(dataset, var){

  dataset %>%
    # embrace var to be able to call it with any grouping factor
    group_by({{var}}) %>% 
    summarise(n=n()) %>%
    mutate(totalN = cumsum(n),
           percent = n / sum(n),
           cumpercent = cumsum(n / sum(n)))

}

然后(前提是你source("tab.R")),这是你的一个班轮:

tab(dataset, var1)
# A tibble: 3 x 5
  var1      n totalN percent cumpercent
  <chr> <int>  <int>   <dbl>      <dbl>
1 1         1      1   0.333      0.333
2 2         1      2   0.333      0.667
3 3         1      3   0.333      1  

你可以试试tab(dataset, var2)。请注意,此答案只会按一个因素分组(这是您的问题)。

编辑

one needs to understand how to set the working directory (etc.)

不完全正确,如果您使用的是 Rstudio,则可以通过单击文件夹手动导入数据集。 如果你想使用 R 教授统计数据(我认为你绝对应该这样做),你应该至少有一个 class 最小的东西(是的,包括工作目录、如何调用 library(...) 和基本函数).您可以分配 大量 资源(书籍、YouTube 教程)作为 class 的 homewokrs/part,以便学生熟悉。 如果我们放弃所有假设,任何软件都更容易 的论点是薄弱的,我需要知道如何 where to click 对于任何软件的 特定版本 ...