如何在R中计算在代表班级中特定作业的列中得分>1的按种族/民族分组的学生的百分比?

ulmd4ohb  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(86)

我的数据看起来像这样,但我有大约100多行:
| 识别码|等级|人种/种族|
| - -|- -|- -|
| 一个|第0页|白色|
| 2个|2个|亚洲人|
| 三个|2个|西班牙裔|
| 四个|第0页|亚洲人|
| 五个|三个|黑色|
| 六个|一个|白色|
| 七个|2个|西班牙裔|
| 八个|一个|黑色|
我想计算按种族/民族分组的得分大于1的学生占确定为该种族/民族组的学生总数的百分比(即,班级中得分大于1的白色学生占白人学生总数的百分比,然后对所有种族/民族类别重复)。我希望每个种族/民族类别占一行,并计算相应的百分比:
| 人种/种族|百分比|
| - -|- -|
| 白色|不含|
| 亚洲人|百分之五十|
| 西班牙裔|100%的|
| 黑色|百分之五十|
我试了下面的代码:

data %>%
  select(`Race/Ethnicity`) %>%
  mutate(Percent = scales::label_percent()(ave(data$Grade>1, data$`Race/Ethnicity`, FUN=mean)))

但是,它提供了以下输出,其中包含每个种族/民族的重复值,但我只希望每个种族/民族类别占一行:
| 人种/种族|百分比|
| - -|- -|
| 白色|不含|
| 亚洲人|百分之五十|
| 西班牙裔|100%的|
| 亚洲人|百分之五十|
| 黑色|百分之五十|
| 白色|不含|
| 西班牙裔|100%的|
| 黑色|百分之五十|

6kkfgxo0

6kkfgxo01#

data <-
tibble::tribble(
  ~id, ~grade, ~race_ethnicity,
   1L,     0L,           "White",
   2L,     2L,           "Asian",
   3L,     2L,        "Hispanic",
   4L,     0L,           "Asian",
   5L,     3L,           "Black",
   6L,     1L,           "White",
   7L,     2L,        "Hispanic",
   8L,     1L,           "Black"
  ) 

data %>%
  group_by(race_ethnicity) %>% 
  summarise(percent = mean(grade > 1)) %>%
  mutate(percent = scales::label_percent()(percent))

# A tibble: 4 x 2
  race_ethnicity percent
  <chr>          <chr>  
1 Asian          50%    
2 Black          50%    
3 Hispanic       100%   
4 White          0%

相关问题