我想要的输出是将
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"))
您只是在寻找:
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%