R

时间:2018-06-27 17:24:35

标签: r dplyr

我在创建嵌套的交叉表和获取正确的计算值作为表中的值时遇到了一些困难。我想要创建的是:

 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

1 个答案:

答案 0 :(得分:0)

如果我的理解正确,我认为您正在分组。我猜想您想针对给定的IDresCallCount总结所有RACE的内容。您的示例中未明确指出; ID中省略了transmute,因此您仍然会为每个唯一的ID赢得一行,我认为这不是故意的。

我会提出这样的建议;这里的核心是我们将completena.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