我希望我能很容易地解释这一点,但我的最终目标是:当“候选人”是“唐纳德·特朗普”时,在所有种族(N)列中,受访者中“白人”的比例是多少。因此,在这个例子中,有5个“唐纳德·特朗普”和2个“白人”来自“Race1”,所以选择“唐纳德·特朗普”的人中有40%是“白人”。然后查找所有其他种族(N)列和性别列的百分比总计。无论是使用频率、交叉表、计数等,都无法找出最好的方法。
我知道我在第二部分提出了很高的要求,但另外,当“候选人”是“唐纳德·特朗普”时,女性受访者“Gender1”中白人女性和黑人女性的比例是多少?
作为一个很大的奖励,有没有一个很好的包来展示结果?非常感谢你的帮助。
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发布于 2020-03-21 01:17:52
我使用的是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 https://stackoverflow.com/questions/60776438
复制相似问题