Кросс-таблицы с табличными вычислениями в R - PullRequest
0 голосов
/ 27 июня 2018

У меня возникли некоторые трудности при создании вложенных кросс-таблиц и получении правильных вычислений в качестве значений в таблицах. То, что я хочу создать, это:

 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 голосов
/ 29 июня 2018

Если я правильно понимаю, я думаю, что вы входите в группу. Я предполагаю, что вы хотите подвести итог по всем 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...