J'essaie d'ajouter add() aux données groupées sans en utilisant do.add_row avec group_by imbriqué
library(dplyr)
library(tidyr)
library(purrr)
library(tibble)
my.data <- data.frame(
supplier = c("a","a","a","a","a","a","b","b","b","b","b","b"),
date = rep(c("2017-06-01","2017-03-01","2017-02-01","2017-01-12",
"2017-05-01","2017-04-01"), 2),
order = c(1,0,0,1,1,0,0,1,0,0,1,0)
)
Solution avec faire
my.data %>%
group_by(supplier) %>%
do(add_row(.,.before=0))
qui donne
# A tibble: 14 x 3
# Groups: supplier [3]
supplier date order
<chr> <chr> <dbl>
1 <NA> <NA> NA
2 a 2017-06-01 1
3 a 2017-03-01 0
4 a 2017-02-01 0
5 a 2017-01-12 1
6 a 2017-05-01 1
7 a 2017-04-01 0
8 <NA> <NA> NA
9 b 2017-06-01 0
10 b 2017-03-01 1
11 b 2017-02-01 0
12 b 2017-01-12 0
13 b 2017-05-01 1
14 b 2017-04-01 0
tentative avec nid et muter ou purrr :: carte
my.data %>%
group_by(supplier) %>%
nest() %>%
mutate(extra.row = add_row(data, .before = 0))
Erreur dans mutate_impl (.data, dots): Erreur d'évaluation: Type d'index non pris en charge: NULL.
Toutes les suggestions. faire est très lent lorsqu'il est mis à l'échelle.
Vous voulez la ligne entière soit NA, même le regroupement var (s)? – Frank
L'objectif est d'ajouter add_row avec la valeur de date qui est 30 jours avant la date minimale par groupe. add_row (données, date = (min (. $ date) - 30), .before = 0) – iboboboru
Ok, une jointure devrait le faire, je suppose. Je n'utilise pas le tidyverse donc je ne peux pas répondre. Vous devriez probablement préciser que la "solution à faire" dans la question n'est pas une solution (puisque le fournisseur et la date sont NA) ..? – Frank