Использование poisson.test с dplyr - PullRequest
1 голос
/ 10 октября 2019

Я хочу провести тест Пуассона на каждом ряду тиббла. Тем не менее, mutate не работает, потому что poisson.test, похоже, предназначен для чисел, а не для столбцов. Какой лучший обходной путь? На данный момент единственное, что мне удалось получить - это явный цикл for ...

df <- tribble(
~count, ~time,
5, 10,
4, 7,
8, 10)

# Fails
df %>% mutate(rate = poisson.test(count, T = time)
# Error in poisson.test(remove_count, T = FHs) : 
#   the case k > 2 is unimplemented

1 Ответ

1 голос
/ 10 октября 2019

Поскольку мы хотим применить к каждой строке, один вариант - map2, где он берет каждый элемент 'count', 'time' и делает poisson.test

library(dplyr)
library(purrr)
df %>%
   mutate(rate = map2(count, time, poisson.test))

Или, если мыне хотите загружать другой пакет (purrr), тогда это можно сделать с помощью rowwise

df %>% 
   rowwise %>%
   mutate(rate = list(poisson.test(count, time))) 

. Это даст тестовый вывод в виде столбца list. Если мы заинтересованы в извлечении estimate

df %>%
   mutate(rate = map2_dbl(count, time, ~poisson.test(.x, .y)$estimate))
# A tibble: 3 x 3
#  count  time  rate
#  <dbl> <dbl> <dbl>
#1     5    10 0.5  
#2     4     7 0.571
#3     8    10 0.8  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...