получить доступ к первой строке набора данных group_by - PullRequest
0 голосов
/ 20 мая 2018

У меня есть dataframe df1 со столбцами a, b, c.Я хочу присвоить c = 0 первой строке dataset, возвращаемой group_by(a,b).Я пробовал что-то вроде

t <- df1 %>% group_by(a,b) %>% filter(row_number(a)==1) %>% mutate(c= 0)

Но это уменьшило количество строк.Ожидаемый результат -

a     b     c
a1    b1    0
a1    b1    NA
a2    b2    0
a2    b2    NA

1 Ответ

0 голосов
/ 20 мая 2018

Вы можете использовать seq_along для нумерации элементов в каждой группе от 1 до общего количества элементов в каждой группе (в данном случае 2).Затем с помощью ifelse установите для первого элемента 'c' для каждой группы значение 0 и оставьте другой элемент без изменений.

library(dplyr)
df %>% 
  group_by(a, b) %>% 
  mutate(c = ifelse(seq_along(c) == 1, 0, c))
#  A tibble: 4 x 3
#  Groups:   a, b [2]
#  a     b         c
#  <fct> <fct> <dbl>
#1 a1    b1       0.
#2 a1    b1      NA 
#3 a2    b2       0.
#4 a2    b2      NA 

data

df <- data.frame(a = rep(c("a1", "a2"), each = 2),
                 b = rep(c("b1", "b2"), each = 2), 
                 c = NA)
df
#   a  b  c
#1 a1 b1 NA
#2 a1 b1 NA
#3 a2 b2 NA
#4 a2 b2 NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...