我在创建嵌套的交叉表和获取正确的计算值作为表中的值时遇到了一些困难。我想要创建的是:
Race resCallCount Completion Rate Caucasian 1 0.53% Caucasian 2 0.48% Caucasian 3 0.32% Caucasian 4 0.16% Caucasian 5 0.07% Caucasian 6 0.00%
完成率的计算方式为:百分比=完成次数/总和(n))
n是根据add_count计算得出的,并将每种情况标记为1
我一直在尝试
CellAttempts <- subset(combined2, CELL == 1)
CellAttempts <- add_count(CellAttempts, ID)
group_by(CellAttempts, RACE) %>% transmute(resCallCount, percent =
complete/sum(n))`
但只能得到
Groups: RACE [13]
RACE resCallCount percent
<chr> <int> <dbl>
1 Caucasian 1 NA
2 Caucasian 1 NA
3 Caucasian 1 NA
4 Caucasian 1 NA
5 Caucasian 1 NA
6 Caucasian 1 NA
7 Caucasian 1 NA
8 Caucasian 1 NA
9 Caucasian 1 NA
10 Caucasian 1 NA
... with 520,337 more rows
感谢您的帮助
编辑:这是初始数据框的样子:
我的数据按个人堆叠,每行多行。
ID resCallCount resCodeResult AGE RACE complete n
<chr> <int> <chr> <int> <chr> <dbl> <int>
1 NY2252a_45493 1 P1 62 Caucasian 1 1
2 NY2252a_45494 1 P1 50 Caucasian NA 1
3 NY2252a_454911 1 P1 31 Caucasian NA 1
4 NY2252a_454917 1 12 57 Caucasian 1 1
5 NY2252a_454919 1 P1 80 Caucasian 1 1
6 NY2252a_454928 1 P1 30 Caucasian 1 1
答案 0 :(得分:0)
如果我的理解正确,我认为您正在分组。我猜想您想针对给定的ID
和resCallCount
总结所有RACE
的内容。您的示例中未明确指出; ID
中省略了transmute
,因此您仍然会为每个唯一的ID
赢得一行,我认为这不是故意的。
我会提出这样的建议;这里的核心是我们将complete
与na.rm=TRUE
汇总到sum
。所以
CellAttempts %>%
group_by(RACE, resCallCount) %>%
summarise(percent = sum(complete, na.rm=TRUE)/sum(n))
示例数据的产量:
# A tibble: 1 x 3
# Groups: RACE [?]
RACE resCallCount percent
<chr> <int> <dbl>
1 Caucasian 1 0.667