Есть ли простой способ добавить результат суммирования dplyr в каждую строку? - PullRequest
1 голос
/ 14 февраля 2020

Ниже приведена простая версия моих данных:

sample dataset

Я хочу создать флаг для каждой группы, если у них есть хотя бы один элемент в Column1. Я знаю, что могу сделать это в dplyr, а затем объединить его с исходными данными, но мне было интересно, есть ли более простой способ.

Например, я могу сделать это:

df_column <- df %>% filter(!is.na(Column1)) %>% group_by(Group)%>%
  summarize(n=n_distinct(Column1))

, а затем я могу объединить это с исходными данными и создать флаг.

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

Без filter ing мы можем сделать это с mutate, создав логический столбец на основе количества уникальных элементов (n_distinct) в «Column1» после группировки по «Group»

library(dplyr)
df %>%
     group_by(Group) %>%
     mutate(flag = n_distinct(Column1[!is.na(Column1)]) > 1)
0 голосов
/ 14 февраля 2020

Просто рифф на предыдущий ответ с использованием ifelse, который может быть легче понять, если вы выходите из Excel (как вам кажется):

library(dplyr)

df %>%
    group_by(Group) %>% 
    mutate(flag = ifelse(
        is.na(column1),
        "flag",
        "dont_flag"
    ))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...