如何在 R 中获取表格,包括计数、相对频率和累积频率?

Posted

技术标签:

【中文标题】如何在 R 中获取表格,包括计数、相对频率和累积频率?【英文标题】:How to get table in R, including count, relative frequencies, and cumulative frequencies? 【发布时间】:2020-01-14 14:02:59 【问题描述】:

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

有没有一种简单的方法可以在 R 中获取频率表(包括计数、百分比和累积频率),就像我们在 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 个不同的包。

【问题讨论】:

“但这很明显,对于本科生来说太复杂了” 你有数据支持吗?它读起来就像一个人会做数学......如果他们能处理数学,他们应该能够处理你的mutate调用中的操作 当然,在某些时候你会明白这一点,我们也很自然地这样做,因为我们知道语法。但是,如果您在非常基础的入门级别教授统计数据,那么我相信我们都会同意tab 比这个 dplyr 解决方案更容易和方便,不是吗? 我不确定该特定任务是否有基本功能。尽管如此,我认为你正在接近“Stata-R”辩论错误。 tidyverse 解决方案并不复杂,tidyverse 被设计为易于使用和易于阅读。您提供的代码非常直观,一个人(lundergrad 学生)可以理解正在发生的事情并将这些知识用于许多其他问题。假设您有一个更大的数据集,并且您想要相同的结果但对多个变量进行分组:从概念上讲,您只需对 group_by 函数进行少量更改。这是您从 R 中受益的地方。 您可以使用count(var1)从代码中删除一行 好吧,这一切都是正确的,尽快学习这一切将在以后非常方便,因为从那里将其应用于另一个问题或数据集的步骤显然会更小。但我仍然认为这需要逐步学习:在使用 dplyr 之前,需要了解如何设置工作目录(等等)。因此,如果您想了解按下Ctrl + Enter 时代码是如何产生输出的,您将需要一个非常简短且易于掌握的代码。仅作记录:我并不是说 STATA 更​​好。 【参考方案1】:

我不同意你关于本科生无法理解的说法。我不想将这个问题纳入教学策略,如果您认为 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)。请注意,此答案只会按一个因素分组(这是您的问题)。

编辑

需要了解如何设置工作目录(等)

不完全正确,如果您使用的是 Rstudio,您可以通过单击文件夹手动导入数据集。 如果您想使用 R 教授统计数据(我认为您绝对应该这样做),您应该至少拥有一类最小的东西(是的,包括工作目录、如何调用 library(...) 和基本功能)。您可以将大量资源(书籍、YouTube 教程)分配为家庭作业/课堂的一部分,以便学生熟悉。 如果我们放弃所有假设,WHATEVER SOFTWARE IS EASIER 的论点很弱,我需要知道 whereclick任何软件的特定版本...

【讨论】:

以上是关于如何在 R 中获取表格,包括计数、相对频率和累积频率?的主要内容,如果未能解决你的问题,请参考以下文章

如何在pyspark数据框中找到没有分组的累积频率

R中唯一值的累积计数

频率计和通用计数器的区别?

如何用Origin画一幅有多条曲线的对比图

R语言ggplot2可视化绘制累积计数图(累加图,cumulative counts)

重复的累积计数