Проблема в том, что функция сводки, такая как sum()
с mutate()
, эффективно суммирует по группам в данных.Так как вы не применили какую-либо группировку, она суммируется по всему фрейму данных.
В любом случае, у меня есть два решения для вас.Во-первых, используя функцию map_int
из пакета purrr
, которая итеративно применяет функцию к каждому элементу указанного вами столбца, в данном случае столбец «test»:
library(dplyr)
library(purrr)
set.seed(1)
year <-
data.frame(test = rbinom(10000, 8760, 0.0068))
set.seed(1)
year3 <-
year %>%
mutate(year = map_int(test, ~sum(rgeom(., 0.04))))
head(year3)
#> test year
#> 1 61 1369
#> 2 53 1430
#> 3 74 1568
#> 4 57 1483
#> 5 62 1294
#> 6 66 1619
В качестве альтернативы,Вы можете сгруппировать фрейм данных, используя rowwise()
из dplyr
, но я бы предостерег от этого, так как он считается устаревшим в какой-то момент :
set.seed(1)
year <-
data.frame(test = rbinom(10000, 8760, 0.0068))
set.seed(1)
year3 <-
year %>%
rowwise() %>%
mutate(year = sum(rgeom(test, 0.04))) %>%
ungroup()
head(year3)
#> # A tibble: 6 x 2
#> test year
#> <int> <int>
#> 1 61 1369
#> 2 53 1430
#> 3 74 1568
#> 4 57 1483
#> 5 62 1294
#> 6 66 1619