【发布时间】: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 更好。