在每个级别进行总结,并将其附加到下一个级别 R 的 tidyverse 中的摘要中

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

我想要的输出是将

DATA2
添加到
DATA3
,同时保留
DATA3
行数。

是否可以将这两者通过管道相互连接,以便我们首先在

n()
级别计算
EL
,然后在 EL 下进一步在其正下方的
n()
级别计算
EL and Black

也就是说,

n()
的结果是否有可能在下层显示出来?

library(tidyverse)

DATA <- structure(list(EL = c("Former", "Current", "Former", "Current", 
"Former", "Former", "Current", "Current", "Current", "Current"
), Black = c("No", "No", "No", "No", "No", "No", "Yes", "Yes", 
"No", "No"), Language = c("Spanish", "Spanish", "English", "Vietnamese", 
"Chinese", "Vietnamese", "Spanish", "Amharic", "Romanian", "English"
)), row.names = c(1L, 2L, 6L, 9L, 35L, 38L, 50L, 54L, 61L, 71L
), class = "data.frame")


DATA2 <- DATA %>% group_by(EL) %>% 
  mutate(n_EL_Type = n())


DATA3 <- DATA %>% group_by(EL, Black, Language) %>% 
  summarise(Number = n()) %>% 
  mutate(Total = sum(Number), Percentage = paste0(round(Number/Total*100,2),"%")
  ) %>% 
  arrange(desc(Percentage),Language,EL) %>%
  filter(Language %in% c("Spanish","Amharic"))
r dataframe dplyr tidyverse
1个回答
0
投票

您只是在寻找:

library(tidyverse)

DATA %>% group_by(EL) %>% 
  mutate(n_EL_Type = n()) %>%
  group_by(EL, Black, Language) %>% 
  summarise(n_EL_Type = n_EL_Type,
            Number = n()) %>% 
  mutate(Total = sum(Number),
         Percentage = paste0(round(Number/Total*100,2),"%")
  ) %>% 
  arrange(desc(Percentage),Language,EL) %>%
  filter(Language %in% c("Spanish","Amharic"))

# A tibble: 4 x 7
# Groups:   EL, Black [3]
  EL      Black Language n_EL_Type Number Total Percentage
  <chr>   <chr> <chr>        <int>  <int> <int> <chr>     
1 Current Yes   Amharic          6      1     2 50%       
2 Current Yes   Spanish          6      1     2 50%       
3 Current No    Spanish          6      1     4 25%       
4 Former  No    Spanish          4      1     4 25%      
© www.soinside.com 2019 - 2024. All rights reserved.