【问题标题】:Frequency/count variable in r studior studio中的频率/计数变量
【发布时间】:2020-06-10 23:43:39
【问题描述】:

长期潜伏,通常使用 SPSS/graphpad 进行统计,慢慢但肯定会逐渐学习如何使用 R studio。

在 SPSS 中,我有一个包含三个变量的数据集:保险(分类,4 个级别); npo_violation(分类,2 级)和频率(规模,这表示例如医疗补助违反/未违反 npo 的频率)。example dataset in SPSS

我正在尝试将这个带有频率计数变量的数据集带入 r-studio,以便我可以根据组合的百分比制作分组条形图。

我用foreign/haven/Hmisc把它带进r studio,自己也创建了

df_sample <- data.frame(insurance = c("Medicaid", "Medicaid", "Blue Cross", "Blue Cross",
                                      "Managed Care", "Managed Care",
                                      "Other", "Other"), 
                        npo_violation=c("No", "Yes",
                                        "No", "Yes",
                                        "No", "Yes",
                                        "No", "Yes"),
                        wt=c(18075, 438, 14691, 109, 6006, 53, 3098, 25))

我不确定如何使用计数/频率变量来计算每个分类组合的百分比/计数。例如,计算(然后绘制)“医疗补助+没有违反非营利组织”和“医疗补助+是违反非营利组织”的百分比 我尝试过使用 wtd.table 函数

wtd.table(df_sample$insurance, df_sample$npo_violation, weights=wt)

但我知道这是不正确的,我收到错误“match.arg(type) 中的错误:'arg' 必须为 NULL 或字符向量”。

我很害怕在这里发帖,但非常感谢任何帮助。使用 R 花了我很长时间,但非常令人欣慰。谢谢。

编辑:最终,我想绘制 x 轴:两个变量,“否”和“是”。传说将有 4 个类别:医疗补助、蓝十字、管理式医疗、其他。 y 轴将是每个保险组在“是”和“否”中所占的百分比,如我在 spss 中制作的交叉表所示

【问题讨论】:

  • 嗨 Rhino,你能编辑你的问题来解释I am not sure how to make it such that the count/frequency variable is reflected to be what I want it吗?这听起来像是一个简单的编程问题,但不确定我是否理解预期的结果。也许您可以插入您正在寻找的代码的预期输出。谢谢:)
  • 你想sum wt 列的insurancenpo_violation 吗?试试aggregate(wt~insurance+npo_violation, df_sample, sum)

标签: r frequency weighted


【解决方案1】:

以下是根据您的数据绘制的两个图:

library(dplyr)
library(magrittr)
library(ggplot2)

df_sample %>% 
   mutate(percent=wt/sum(wt)) %>%    # calculates percent
   ggplot() +                        # launches plotter 
   geom_bar(aes(x=insurance, y=percent, fill=npo_violation), 
        stat="identity",position=position_dodge())  # bars

生成这个:

在上面的示例中,您可以交换xfill 中的变量以获得相反的分组。你也可以这样做:

df_sample %>% 
   mutate(tag=paste(insurance, npo_violation)) %>%     # combines labels
   mutate(percent=wt/sum(wt)) %>%                      # calculates percent
   ggplot(aes(x=tag,y=percent)) +                      # launches plotter
   geom_bar(stat="identity") +                         # tells it to take wt literally
   theme(axis.text.x=element_text(angle=45, hjust=1))  # x axis labels

【讨论】:

  • 天哪 *** 太快了。和惊人的。我认为我实际上正在尝试做的是在 x 轴上以条形图方式绘制“是”和“否”,每个“保险”对“是”和“否”的相对比例/百分比。我正在编辑我的初始帖子以包含一个交叉表,其中包含我希望能够绘制的百分比。
  • 如果它按您喜欢的方式工作,请给它打勾,否则请告诉我是否还有其他方法需要您探索以完成此问题
  • 我稍微改变了一下 df_sample %>% mutate(percent=wt/sum(wt)) %>% # 计算百分比 ggplot() + # 启动绘图仪 geom_bar(aes(x=npo_violation, y=percent, fill=insurance), stat="identity",position=position_dodge()) # 条 谢谢!!真的让我不再紧张了:)
  • 我认为唯一的差距是打印上面显示的交叉表...如果您单独拥有所有观察结果,那部分很简单,因为gmodels 包中的CrossTable 可以计算它们并显示一个SPSS 格式的表格。有了已经计算的百分比,它就没有那么直接了。谢谢,祝你学习顺利!
猜你喜欢
  • 2016-11-18
  • 1970-01-01
  • 2020-07-01
  • 2019-11-24
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多