Size: a a a

R language and Statistical data analysis

2020 May 07

MS

Maria Servetnik in R language and Statistical data analysis
если условие задачи “оставить записи, для которых количество транзакций < 2 ИЛИ доход меньше 1000”, то надо использовать или :)
источник

A

Alex in R language and Statistical data analysis
запутался. у меня такой запрос

data %>%
   group_by(experimentVariant, clientid) %>%
   summarize(users = n_distinct(clientid, na.rm = TRUE),
             registrations = n_distinct(reg, na.rm = TRUE),
             transactions = n_distinct(purchase, na.rm = TRUE),
             revenue = sum (rev, na.rm = TRUE),
             experiments_count = n_distinct(experimentid, na.rm = TRUE)
   ) %>%
   filter(transactions < 2 | experiments_count < 2) %>% arrange(desc(experiments_count))

в результате вижу записи, где experiments_count > 1- https://share.getcloudapp.com/o0ugGXjN
источник

АК

Артём Клевцов... in R language and Statistical data analysis
Alex
запутался. у меня такой запрос

data %>%
   group_by(experimentVariant, clientid) %>%
   summarize(users = n_distinct(clientid, na.rm = TRUE),
             registrations = n_distinct(reg, na.rm = TRUE),
             transactions = n_distinct(purchase, na.rm = TRUE),
             revenue = sum (rev, na.rm = TRUE),
             experiments_count = n_distinct(experimentid, na.rm = TRUE)
   ) %>%
   filter(transactions < 2 | experiments_count < 2) %>% arrange(desc(experiments_count))

в результате вижу записи, где experiments_count > 1- https://share.getcloudapp.com/o0ugGXjN
Всё правильно. | работает слева направо до первого TRUE.
источник

MS

Maria Servetnik in R language and Statistical data analysis
Alex
запутался. у меня такой запрос

data %>%
   group_by(experimentVariant, clientid) %>%
   summarize(users = n_distinct(clientid, na.rm = TRUE),
             registrations = n_distinct(reg, na.rm = TRUE),
             transactions = n_distinct(purchase, na.rm = TRUE),
             revenue = sum (rev, na.rm = TRUE),
             experiments_count = n_distinct(experimentid, na.rm = TRUE)
   ) %>%
   filter(transactions < 2 | experiments_count < 2) %>% arrange(desc(experiments_count))

в результате вижу записи, где experiments_count > 1- https://share.getcloudapp.com/o0ugGXjN
Это те, у которых transactions <2
источник

MS

Maria Servetnik in R language and Statistical data analysis
У вас там сейчас строки, у которых transactions < 2 или experiments_count < 2
источник

MS

Maria Servetnik in R language and Statistical data analysis
То есть, строки, которые удовлетворяют только одно из этих условий, попадают в вашу финальную таблицу
источник

A

Alex in R language and Statistical data analysis
Т.е. для конкретно моей задачи правильнее будет использовать filter(transactions < 2) %>% filter(experiments_count < 2), поскольку если | слева направо работает, то некоторые записи первому условию transactions < 2 удовлетворяют и фильтр дальше не учитывает, что идет после |
источник

A

Alex in R language and Statistical data analysis
?
источник

PU

Philipp Upravitelev in R language and Statistical data analysis
да в фильтр запихните лог.условие и все, зачем вы его на пайпы разбиваете
источник

A

Alex in R language and Statistical data analysis
или через & все условия фильтра перечислить и это решит вопрос?
источник

MS

Maria Servetnik in R language and Statistical data analysis
вам что нужно? чтобы были только строки, где и транзакции меньше двух, и эксперименты меньше двух?
источник

MS

Maria Servetnik in R language and Statistical data analysis
если да, то вам нужно & вместо |
источник

A

Alex in R language and Statistical data analysis
Maria Servetnik
вам что нужно? чтобы были только строки, где и транзакции меньше двух, и эксперименты меньше двух?
да. убрать строки, где транзакции 2+ и экспериментов тоже 2+
источник

АК

Артём Клевцов... in R language and Statistical data analysis
Alex
Т.е. для конкретно моей задачи правильнее будет использовать filter(transactions < 2) %>% filter(experiments_count < 2), поскольку если | слева направо работает, то некоторые записи первому условию transactions < 2 удовлетворяют и фильтр дальше не учитывает, что идет после |
Будь любезен, сформулируй чётко условия выборки, а то ты сам путаешься и народ вовлекаешь в бессмысленную активность.
источник

A

Alex in R language and Statistical data analysis
Из выборки убрать строки, для которых количество транзакций 2+ или количество экспериментов 2+
источник

АК

Артём Клевцов... in R language and Statistical data analysis
Тогда почему тебя не устраивает ситуация, когда количество транзакций < 2 и количество экспериментов больше 2?
источник

MS

Maria Servetnik in R language and Statistical data analysis
Вы в одном сообщении пишете, что и, а во втором, что или. Если и — ставьте &, если или — ставьте |
источник

PU

Philipp Upravitelev in R language and Statistical data analysis
transactions < 2 & experiments_count < 2 - транзакций меньше 2 И количество экспериментов меньше 2
transactions < 2 | experiments_count < 2 - транзакций меньше 2 ИЛИ количество экспериментов меньше 2
источник

A

Alex in R language and Statistical data analysis
Я, наверное, неправильно понимаю, как работает filter и операторы | &. Ожидаю, что если использовать & то для того, чтобы строка осталась после фильтрации условие должно быть и транзакций < 2 и экспериментов < 2. И так фильтр дальше проверяет следующую строку.
источник

PU

Philipp Upravitelev in R language and Statistical data analysis
filter возвращает те строки, которые удовлетворяют логическому условию или их объединению, если условий несколько
если у вас в фильтре строит & - то для этих строк истинны оба условия. если | - то какое-то одно из.
источник