Как разделить данные в одной & ldquo; группе по & rdquo; в R?

$ lookup (aggregation)

Выполняет левое внешнее соединение в незащищенном наборе в той же базе данных для фильтрации в документах из «объединенной» коллекции для обработки. Для каждого входного документа этап $ lookup добавляет новое поле массива, элементы которого являются соответствующими документами из «объединенной» коллекции. Эта стадия $ lookup передает эти измененные документы на следующий этап. Этап $ lookup имеет следующие синтаксисы:

Equality Match

Чтобы выполнить совпадение равенства между полем из входных документов с полем из документов «объединенной» коллекции, этап $ lookup имеет следующий синтаксис:

{
   $lookup:
     {
       from: ,
       localField: ,
       foreignField: ,
       as: 
     }
}

Операция будет соответствовать следующему выражению псевдо-SQL:

SELECT *, 
FROM collection
WHERE  IN (SELECT 
                               FROM 
                               WHERE  );

Mongo URL

0
задан รัตนาภรณ์ เกษมศรี 22 January 2019 в 07:17
поделиться

1 ответ

Вам нужно определить переключатель (я называю это Flag), который изменяется при изменении состояния, что и требуется.

library(dplyr)
library(tidyr)

df <- df %>%
mutate(Flag = ifelse(Status == lag(Status), 0, 1),
    Flag = ifelse(is.na(Flag), 1, Flag),
    CumSum = cumsum(Flag)) %>%
group_by(Date, `Mac address`, Status, CumSum) %>%
summarize(Out = paste(Link, collapse = "_")) %>%
ungroup() %>%
arrange(CumSum)

df

РЕДАКТИРОВАТЬ: вот вывод, который я получаю, который идентичен тому, что вы сказали, что ожидали. Не уверен, что вы имеете в виду в комментарии об этом до сих пор не

# output
# A tibble: 10 x 5
   Date    `Mac address`   Status CumSum Out                                   
<chr>   <chr>           <lgl>   <dbl> <chr>                                 
 1 1/15/2~ 00:00:00:00:00~ FALSE       1 247-237                               
 2 1/15/2~ 00:00:00:00:00~ TRUE        2 237-235                               
 3 1/15/2~ 00:00:00:00:00~ FALSE       3 235-109                               
 4 1/15/2~ 00:00:00:00:00~ TRUE        4 214-106                               
 5 1/15/2~ 00:00:00:00:00~ FALSE       5 106-215                               
 6 1/15/2~ 00:00:00:00:00~ TRUE        6 215-253_253-245                       
 7 1/15/2~ 00:00:00:00:00~ FALSE       7 245-238_238-243_241-233_233-248_248-2~
 8 1/15/2~ 00:00:00:00:00~ TRUE        8 239-230                               
 9 1/15/2~ 00:00:00:00:00~ FALSE       9 230-229_229-252                       
10 1/15/2~ 00:00:00:00:00~ TRUE       10 252-244_244-232  
0
ответ дан user2602640 22 January 2019 в 07:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: