web-dev-qa-db-fra.com

Ajoutez une ligne vierge après chaque valeur unique d'une colonne dans un Dataframe dans R

Je me demandais s'il serait possible d'ajouter une ligne vierge après chaque valeur unique de study dans mon data ci-dessous?

Mon Desired_output est inférieure à.

Veuillez noter que ceci est une donnée de jouets. Une réponse fonctionnelle est très appréciée.

data <- data.frame(study=c(rep(1,2),2:3), year=c(rep(2001,2),2002:2003))

Desired_output =
" study year
1     1 2001
2     1 2001
             # <- Blank row
3     2 2002
             # <- Blank row
4     3 2003"
1
Simon Harmel

Groupe par une nouvelle colonne égale à étudier, puis ajoutez une ligne à la fin de chaque groupe à l'aide de Group_Modify. Enfin, supprimer l'étude2 et la dernière ligne.

library(dplyr)

data %>%
 group_by(study2 = study) %>%
 group_modify(~ add_row(.)) %>%
 ungroup %>%
 select(-study2) %>%
 slice(-n())

donnant:

# A tibble: 7 x 2
  study  year
  <dbl> <dbl>
1     1  2001
2     1  2001
3    NA    NA
4     2  2002
5    NA    NA
6     3  2003
0
G. Grothendieck