Как я могу использовать функцию мутации в этой ситуации? - PullRequest
0 голосов
/ 11 февраля 2020

Используя R studio, у меня есть такой набор данных:

ID location Bouns
1  A        yes
2  A        yes
3  B        no
4  C        yes
...

Если я хочу добавить столбец с помощью преобразования или суммирования, он вызывает «падеж», чтобы подсчитать, сколько «да» появляется в баунс бауз на локации. Например, вот так

ID location Bouns cases
1  A        yes   2
2  A        yes   2
3  B        no    0
4  C        yes   1

, если на месте A

есть 2 «да»

Ответы [ 3 ]

0 голосов
/ 11 февраля 2020

вот код с использованием функций dplyr, т.е. сгруппировать и суммировать:

df <- data.frame(ID = c(1,2,3,4),
                 location=c("A","A","B","C"),
                 Bouns = c("yes","yes","no","yes"))

df2 <- left_join(df,df %>% group_by(location) %>% summarise(cases=sum(Bouns=="yes")))
0 голосов
/ 11 февраля 2020

1.Создать минимальный воспроизводимый пример :

df <- structure(list(ID = 1:4, location = c("A", "A", "B", "C"),
               Bouns = c("yes", "yes", "no", "yes")),
          row.names = c(NA, -4L), class = "data.frame")

2. Поскольку вы специально просили использовать mutate, вот как использовать dplyr для преобразования в группу df:

df %>% 
  group_by(location) %>% 
  mutate(cases = length(Bouns[Bouns == "yes"])) %>% 
ungroup()
0 голосов
/ 11 февраля 2020

Вы можете попробовать приведенный ниже код, используя ave

df <- within(df,cases <- ave(Bouns=="yes",location, FUN = sum))

, такой что

> df
  ID location Bouns cases
1  1        A   yes     2
2  2        A   yes     2
3  3        B    no     0
4  4        C   yes     1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...