Как применить функцию complete () в зависимости от выполняемого условия? - PullRequest
2 голосов
/ 16 октября 2019

Я хотел бы применить функцию complete(), но только в тех случаях, когда условие выполняется.

Например

library(dplyr)
library(tidyr)

df <- tibble(
  group = c(1,1,1,1,2,2,3,3,3),
  value1 = c(0,1,2,3,0,1,0,1,2),
  value2 = c(2,4,6,1,2,3,7,8,9),
  status = c(1,1,1,1,0,0,1,1,1)
)

df %>% complete(group, value1)

В вышеприведенном примере я хотел бы сделать последний шаг, но в некоторых случаях расширение должно выполняться только complete() где переменная "status" принимает значение 1. У кого-нибудь есть указатели? Спасибо!

1 Ответ

1 голос
/ 16 октября 2019

Конечно, есть более элегантное решение, но я считаю, что оно будет работать:

Данные:

library(dplyr)
library(tidyr)

df <- tibble(
  group = c(1,1,1,1,2,2,3,3,3),
  value1 = c(0,1,2,3,0,1,0,1,2),
  value2 = c(2,4,6,1,2,3,7,8,9),
  status = c(1,1,1,1,0,0,1,1,1)
)

Код:

df %>%
  filter(status == 1) %>% 
  complete(group, value1) %>% 
  bind_rows(subset(df, status == 0))
...