首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得R中两个范畴变量的百分比

如何获得R中两个范畴变量的百分比
EN

Stack Overflow用户
提问于 2020-03-27 13:20:01
回答 1查看 760关注 0票数 0

假设样本总数为8,数据帧如下所示。所有健康分数低于3分的人都是健康的,所有健康分数大于3分的人都生病了。地位显示他们的就业状况。

代码语言:javascript
运行
复制
Status<-(Employed,Unemployed,Student,Student,Employed,Unemployed,Unemployed,Housewife)
Health<-(Healthy,Healthy,Healthy,Sick,Sick,Control,Sick,Sick)

df<-(Status,Health)
level(Health)<-("Healthy,"Sick",Control)
level(Status)<-("Employed","Unemployed","Student","Housewife")

我希望看到健康,生病或控制的人的百分比属于每个职业类别。我要输出如下所示。(举个例子,P.S值只是假设的)就像在所有就业人员中,有多少百分比是健康的?

代码语言:javascript
运行
复制
                    Healthy      Sick   Control
Employed              10%        2%     1%
Unemployed             5%        1%     1%
Student                6%        3%     1%
Housewife              2%        5%     6%

我正在使用以下代码。但它只是给了我频率,而不是百分比。我需要百分比。

代码语言:javascript
运行
复制
tab <- with(df, table(df$Health,df$Status))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-27 13:28:17

我们可以count每个StatusHealth的个体数,group_by状态并计算百分比。为了获得更好的可见性,我们将数据转换为宽格式。

代码语言:javascript
运行
复制
library(dplyr)

df %>%
  count(Status, Health) %>%
  group_by(Status) %>%
  mutate(n = n/sum(n) * 100) %>%
  tidyr::pivot_wider(names_from = Health, values_from = n, 
                     values_fill = list(n = 0))


# Status     Healthy  Sick Control
#  <fct>        <dbl> <dbl>   <dbl>
#1 Employed      50    50       0  
#2 Housewife      0   100       0  
#3 Student       50    50       0  
#4 Unemployed    33.3  33.3    33.3

在基数R中,我们可以使用prop.tabletable来得到百分比。

代码语言:javascript
运行
复制
prop.table(table(df), 1) * 100

数据

代码语言:javascript
运行
复制
df <- structure(list(Status = structure(c(1L, 4L, 3L, 3L, 1L, 4L, 4L, 
2L), .Label = c("Employed", "Housewife", "Student", "Unemployed"
), class = "factor"), Health = structure(c(2L, 2L, 2L, 3L, 3L, 
1L, 3L, 3L), .Label = c("Control", "Healthy", "Sick"), 
class = "factor")), class = "data.frame",row.names = c(NA, -8L))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60886862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档