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

如何获取R中的表格,包括计数、相对频率和累积频率?,r,frequency-distribution,R,Frequency Distribution,我现在已经使用R Studio很多年了,而且比任何其他软件都要频繁,但是现在我开始用R教授统计学,我意识到使用其他软件(如STATA)有些任务更简单 有没有一种简单的方法可以像在STATA中键入tab[variable]一样,在R中获得频率表(包括计数、百分比和累积频率) 我遇到了一个tidyverse解决方案: dataset <- tribble( ~var1, ~var2, ~var3, ~var4, ~var5, "1", "1",

我现在已经使用R Studio很多年了,而且比任何其他软件都要频繁,但是现在我开始用R教授统计学,我意识到使用其他软件(如STATA)有些任务更简单

有没有一种简单的方法可以像在STATA中键入
tab[variable]
一样,在R中获得频率表(包括计数、百分比和累积频率)

我遇到了一个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))
dataset%
分组依据(var1)%>%
总结(n=n())%>%
突变(totalN=(cumsum(n)),
百分比=四舍五入((n/和(n)),3),
cumpercent=四舍五入(cumsum(freq=n/和(n)),3))

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

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

您可以向他们提供这个函数,他们不必理解(就像他们不必理解STATA的函数一样)

您可以尝试
选项卡(数据集,var2)
。请注意,此答案仅按一个因素分组(这是您的问题)

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

不完全正确,如果您使用的是Rstudio,则可以通过单击从文件夹手动导入数据集。 如果您想使用R教授统计(我认为您肯定应该这样做),您应该至少有一类最基本的东西(是的,包括工作目录、如何调用
库(…)
和基本函数)。有大量的资源(书籍、YouTube教程)可以指定为家庭作业/课堂的一部分,因此学生会变得熟悉。
如果我们放弃所有假设,任何软件更容易的论点都是站不住脚的,我需要知道如何点击任何软件的特定版本

“但很明显,这对本科生来说太复杂了,”你有数据支持吗?它读起来就像一个人在做数学…如果他们能处理数学,他们应该能够处理你的
mutate
callSure中的操作,在某个时候你会理解这一点,我们显然会理解,因为我们知道语法。但是如果你在一个非常基本的入门级上教授统计,那么我相信我们都会同意,
tab
比这个dplyr解决方案简单得多,不是吗?我不确定这个特定任务是否有一个基本函数。尽管如此,我认为你对“Stata-R”辩论的态度是错误的。tidyverse解决方案并不复杂,tidyverse设计为易于使用和阅读。您提供的代码非常直观,一个人(lundergrad学生)可以理解正在发生的事情,并在许多其他问题中使用这些知识。例如,您有一个更大的数据集,并且希望得到相同的结果,但要将多个变量分组:从概念上讲,您只需按函数对group_进行一点更改。这里是你从R中受益的地方。你可以通过使用
count(var1)
OK从代码中删除一行。这都是真的,尽快学习这一切将在以后非常有用,因为从那里开始将其应用到另一个问题或数据集的步骤显然会更小。但我仍然认为这需要一步一步地学习:在使用{dplyr}之前,需要了解如何设置工作目录(等等)。所以,如果您想了解当您按下
Ctrl+Enter
时,代码是如何生成输出的,那么您需要一个非常简短、易于掌握的代码。记录在案:我不是说斯塔塔更好。
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)))

}

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