2017-01-22 5 views
0

Я хотел бы получить групповые уровни сгруппированного объекта в dplyr. Это, конечно, равно сгруппированной переменной (с) сразу после группировки. Сгруппированные переменные не могут быть изменены, но их можно развернуть. Возьмем следующий пример:Уровни группы доступа в dplyr

some_df <- data_frame(gr = LETTERS[1:2], 
         value = c(3,4)) 

add_a_row <- function(x) { 
    row <- data_frame(gr = NA, value = NA) 
    if (runif(1) < 0.5) { 
    rbind(x, row) 
    } else { 
    rbind(row, x) 
    } 
} 

some_df %>% group_by(gr) %>% 
    do(add_a_row(.)) %>% 
    do()  

Таким образом, для каждой группы добавляется пустая строка, либо как первая, либо последняя строка. В финале do я хотел бы установить 'gr' на его групповой уровень. Есть ли способ, чтобы получить доступ к уровням группы, так что окончательный do может быть:

do(mutate(., gr = gr_level)) 

(Выше всего лишь пример случая использования для ясности Вопрос в том, как получить доступ к уровням группы, а не как решить. небольшая проблема выше).

+0

Не могли бы вы показать ожидаемый результат? – akrun

+2

Посмотрите на '? Group_indices'. Однако в вашем примере вы изменяете переменную группировки в NA, тем самым добавляя дополнительную группу. – konvas

+0

Отлично, это то, что я искал, но не смог найти. Благодаря! – Edwin

ответ

-2

Мы можем немного изменить функцию, изменив NA к x$gr в row создания

add_a_row <- function(x) { 
    row <- data_frame(gr = x$gr, value = NA) 
    if (runif(1) < 0.5) { 
     rbind(x, row) 
    } else { 
    rbind(row, x) 
    } 
} 

some_df %>% 
    group_by(gr) %>% 
    do(add_a_row(.)) 
# gr value 
# <chr> <dbl> 
#1  A NA 
#2  A  3 
#3  B NA 
#4  B  4 

-

+0

Конечно, это способ сделать это, но я не хочу решать эту конкретную проблему. Я хочу знать, можно ли извлекать групповые уровни ... – Edwin

+0

@Edwin Я не совсем уверен, чего вы хотите. Вот почему я прокомментировал ваш вопрос. Если вы хотите извлечь, то 'some_df%>% group_by (gr)%>% do (add_a_row (.))%>%. $ Gr%>% na.omit' на основе вашей функции – akrun

+0

Таким образом, я искал' group_indices'. Спасибо в любом случае – Edwin

Смежные вопросы