代码之家  ›  专栏  ›  技术社区  ›  Dr. Fabian Habersack

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

  •  1
  • Dr. Fabian Habersack  · 技术社区  · 6 年前

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

    有没有一种简单的方法可以像我们通过打字一样获得R中的频率表(包括计数、百分比和累计频率) 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个不同的软件包。

    0 回复  |  直到 6 年前
        1
  •  4
  •   Matias Andina    6 年前

    您可以向他们提供这个函数,他们不必理解(就像他们不必理解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教程),以便学生熟悉。 论据 任何软件都更容易 如果我们放弃所有假设,我需要知道怎么做 哪里 点击 特定版本 不管是什么软件。。。