【问题标题】:R frequency tables only for certain values仅针对特定值的 R 频率表
【发布时间】:2023-02-21 22:54:30
【问题描述】:

我有一个包含 15 个值的向量,范围从 1 到 4。

values <- c(1,2,3,1,2,3,1,2,2,2,1,3,1,2,4)

假设这是问卷中的一个项目,有 15 个人被问到某个问题。 1 到 2 表示受访者用“否”来指代该问题,而值 3 或 4 表示对该问题的肯定回答。我只想找出给出肯定答案的人的百分比,即回答 3 或 4 的受访者数量除以所有参与者的总数。

我从 table()prop.table() 开始:

round(prop.table(table(values)), 2) 屈服于

   1    2    3    4 
0.33 0.40 0.20 0.07 

有没有一种使用 prop.table 的方法,它可以让我知道那些表示 3 或 4(并且只有那些)的人的百分比。我应该先对值进行二分法吗?

结果应该是这个样子:

values
0.27

【问题讨论】:

    标签: r frequency proportions


    【解决方案1】:

    因为只有一个班级,所以可以使用mean

    mean(values > 2)
    #mean(values %in% c(3,4)) #Alternative
    #[1] 0.2666667
    

    【讨论】:

      【解决方案2】:

      避免修改或创建新数据的一种选择是在使用 %in% 创建逻辑表后使用 prop.table

      prop.table(table(values %in% c(3,4)))
      
      # or 
      # proportions(table(values %in% c(3,4))) # Thanks @GKi
      
      #    FALSE      TRUE 
      #0.7333333 0.2666667 
      

      values %in% c(3,4) 行创建了一个与数据values 长度相同的布尔向量。 tableprop.table再总结一下。由于 R 在数学上分别将 TRUE/FALSE 解释为 1/0,因此它将返回比例。

      如果您只想要单一比例而不是两者:

      prop.table(table(values %in% c(3,4)))["TRUE"] # Thanks @GKi
      
      # or 
      # proportions(table(values %in% c(3,4)))["TRUE"] 
      
      #     TRUE 
      #0.2666667 
      

      【讨论】:

      • 可以直接子集proportions(table(values %in% c(3,4)))["TRUE"]
      • 非常好 - 我已经更新以包含优化的代码。谢谢你!
      猜你喜欢
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      相关资源
      最近更新 更多