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 对于任何软件的 特定版本 ...
我使用 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 对于任何软件的 特定版本 ...