R 中 data.frame 的条件 dplyr::summarize()

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

在我下面的

DATA
中,我想知道如何
summarize()
选择6个不同种族(
Hispanic
AmIndian
Asian
White
Pacific
AsiaPacific
)的数量(
"Y" 
)什么时候
Ethinc_overall!="B"

library(tidyverse)

DATA <- read.table(h=TRUE,text=
"EL_Type Language Black Hispanic AmIndian Asian White Pacific AsiaPacific Ethinc_overall
 Current  English Black        Y    N     N     N       N           N              H
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        Y    N     N     N       N           N              H
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     Y     N       N           Y              M
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        Y    Y     N     Y       N           N              H
 Current  English Black        Y    Y     N     N       N           N              H
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        Y    Y     N     Y       N           N              H
 Current  English Black        Y    Y     N     Y       N           N              H
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     Y       N           N              M
 Current  English Black        N    Y     N     N       N           N              M
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     Y     N       N           Y              M
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        Y    Y     N     N       N           N              H
 Current  English Black        Y    N     N     N       N           N              H
 Current  English Black        Y    N     N     N       N           N              H
 Current  English Black        Y    N     N     Y       N           N              H
 Current  English Black        Y    Y     N     N       Y           Y              H
 Current  English Black        Y    Y     N     N       Y           Y              H
 Current  English Black        Y    N     N     N       N           N              H
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        Y    Y     Y     Y       Y           Y              H
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        Y    N     N     Y       N           N              H
 Current  English Black        Y    N     N     Y       N           N              H
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        Y    N     N     N       N           N              H
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        Y    N     N     Y       N           N              H
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        Y    N     N     Y       N           N              H
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        Y    N     N     N       N           N              H
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        N    N     N     N       N           N              B
 Current  English Black        Y    N     N     N       N           N              H
 Current  English Black        Y    N     N     N       N           N              H
 Current  English Black        Y    N     N     N       N           N              H
 Current  English Black        N    N     N     Y       N           N              M
 Current  English Black        N    N     N     N       N           N              B")
r dataframe dplyr summarize
1个回答
0
投票

您的

Ethinc_overall == "B"
没有任何“是”值。所以我对每个种族进行了总结。但是您可以取消注释实际数据集的
filter()
行,这应该可以满足您的需求。

DATA %>% 
  # filter(Ethinc_overall == "B") %>% ## you don't have any Y's for B
  summarise(across(Hispanic:AsiaPacific, 
                   list(Yes = ~ sum(. == "Y"),
                        No  = ~ sum(. == "N"))), .by = Ethinc_overall) %>% 
  pivot_longer(-Ethinc_overall, values_to = "count") %>% 
  separate(name, into = c("ethnicity", "Yes/No")) %>% 
  filter(count > 0)

#> # A tibble: 27 x 4
#>    Ethinc_overall ethnicity   `Yes/No` count
#>    <chr>          <chr>       <chr>    <int>
#>  1 H              Hispanic    Yes         23
#>  2 H              AmIndian    Yes          8
#>  3 H              AmIndian    No          15
#>  4 H              Asian       Yes          1
#>  5 H              Asian       No          22
#>  6 H              White       Yes          9
#>  7 H              White       No          14
#>  8 H              Pacific     Yes          3
#>  9 H              Pacific     No          20
#> 10 H              AsiaPacific Yes          3
#> # i 17 more rows

创建于 2024-02-09,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.