R 频率表仅适用于某些值

问题描述 投票:0回答:2

我有一个包含 1 到 4 的 15 个值的向量。

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
2个回答
1
投票

因为只有一节课,所以可以用

mean
.

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

1
投票

避免修改或创建新数据的一个选项是在使用

prop.table
创建逻辑表后使用
%in%

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
长度相同的布尔向量。
table
prop.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 
© www.soinside.com 2019 - 2024. All rights reserved.