【问题标题】:Crosstab/Frequency/Count across multiple variables in RR中多个变量的交叉表/频率/计数
【发布时间】:2020-07-01 17:24:02
【问题描述】:

我希望我能轻松解释这一点,但我的最终目标是:当“候选人”是“唐纳德·特朗普”时,在所有 Race(n) 列中,有多少百分比的受访者是“白人”。因此,在这种情况下,有 5 个“唐纳德特朗普”实例和 2 个来自“种族1”的“白人”观察结果,因此选择“唐纳德特朗普”的人中有 40% 是“白人”。然后找到所有其他 Race(n) 列和 Gender 列的百分比总数。绝对无法找出最好的方法,无论是使用频率、交叉表、计数等。

我知道我在第二部分提出了很多问题,但此外,当“候选人”是“唐纳德特朗普”时,“性别 1”的女性受访者中有多少百分比是白人女性或黑人女性。

作为一个很大的好处,有没有一个很好的包来展示结果?非常感谢您的帮助。

Candidate       Race1   Race2   Race3   Race4   Gender1   Gender2

Donald Trump    White                           Female
Democrat        White                                     Male        
Donald Trump            Black                   Female
Donald Trump                    Asian           Female
Democrat                        Asian                     Male
Democrat                Black                   Female
Democrat                                Latino            Male
Donald Trump                            Latino            Male
Donald Trump    White                           Female

【问题讨论】:

  • 你能用一两个简明的问题表述你的问题吗?分享您已经尝试解决问题的方法也很重要。

标签: r count frequency crosstab


【解决方案1】:

我正在使用library(dplyr),但这是我的想法:

data_f  <-  data %>% 
            cbind(Race = coalesce(!!!select(data, starts_with("Race"))), 
                  Gender = coalesce(!!!select(data,starts_with("Gender"))))

coalesce 将您以Race 开头的列和Gender 合并为一列,因为您提供的列是互斥的。

data_r  <-  data_f %>%
            group_by(Candidate, Race) %>%
            summarise(Race_count = n()) %>%
            ungroup() %>%
            left_join(data_f %>% 
                        group_by(Candidate) %>%
                        summarise(Total_Race_Ct = n()), by = "Candidate") %>%
            mutate(Per_Race = Race_count/Total_Race_Ct)

这会产生以下作为种族分析的候选人特定选票总数的百分比:

# A tibble: 8 x 5
  Candidate    Race   Race_count Total_Race_Ct Per_Race
  <chr>        <fct>       <int>         <int>    <dbl>
1 Democrat     Asian           1             4     0.25
2 Democrat     Black           1             4     0.25
3 Democrat     Latino          1             4     0.25
4 Democrat     White           1             4     0.25
5 Donald Trump Asian           1             5     0.2 
6 Donald Trump Black           1             5     0.2 
7 Donald Trump Latino          1             5     0.2 
8 Donald Trump White           2             5     0.4 

对于性别分析:

data_g  <-  data_f %>%
            group_by(Candidate, Gender) %>%
            summarise(Gender_count = n()) %>%
            ungroup() %>%
            left_join(data_f %>% 
                      group_by(Candidate) %>%
                      summarise(Total_Gender_Ct = n()), by = "Candidate") %>%
            mutate(Per_Gender = Gender_count/Total_Gender_Ct)

这会产生以下作为性别分析候选人特定选票总数的百分比:

# A tibble: 4 x 5
  Candidate    Gender Gender_count Total_Gender_Ct Per_Gender
  <chr>        <fct>         <int>           <int>      <dbl>
1 Democrat     Female            1               4       0.25
2 Democrat     Male              3               4       0.75
3 Donald Trump Female            4               5       0.8 
4 Donald Trump Male              1               5       0.2 

【讨论】:

  • 这太不可思议了!!太感谢了!我应该为此付钱给你!
猜你喜欢
  • 2016-11-18
  • 2014-09-29
  • 1970-01-01
  • 1970-01-01
  • 2016-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-16
相关资源
最近更新 更多