我在创建嵌套交叉表并获得正确的计算作为表中的值时遇到了一些困难。 我想创造的是:
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
如果我理解正确,我认为您正在省略分组。 我猜你想总结给定resCallCount
的所有ID
和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