Comment puis-je compléter les valeurs manquantes par groupe?Remplir et remplir les données manquantes dans les groupes en utilisant une autre trame de données
J'ai un df avec des recommandations et des rangs, et j'ai besoin d'insérer des recommandations par défaut quand je n'en ai pas au moins 4.
exemple d'entrée:
library(tidyverse)
fixed_recomendations <- data.frame(recomendation_id = 50:54, name = paste("recomendation", 50:54, sep = "_"), stringsAsFactors = FALSE)
content_id <- c(1,1,2,rep(3, 6))
rank <- c(1, 2, 1, 1:6)
recomendation_id <- c(1:9)
name <- paste("recomendation", recomendation_id, sep = "_")
df <- data.frame(content_id, rank, recomendation_id, name, stringsAsFactors = FALSE)
# content_id rank recomendation_id name
# 1 1 1 recomendation_1
# 1 2 2 recomendation_2
# 2 1 3 recomendation_3
# 3 1 4 recomendation_4
# 3 2 5 recomendation_5
# 3 3 6 recomendation_6
# 3 4 7 recomendation_7
# 3 5 8 recomendation_8
# 3 6 9 recomendation_9
J'ai essayé de le faire avec complet/remplir, mais il ne respecte pas les groupes et couper aussi les valeurs en dehors de la plage de rang.
df %>%
complete(content_id, rank = 1:4,
fill = list(
recomendation_id = fixed_recomendations$recomendation_id,
name = fixed_recomendations$name
))
# content_id rank recomendation_id name
# 1 1 1 recomendation_1
# 1 2 2 recomendation_2
# 1 3 50 recomendation_50
# 1 4 51 recomendation_51
# 2 1 3 recomendation_3
# 2 2 52 recomendation_52
# 2 3 53 recomendation_53
# 2 4 54 recomendation_54
# 3 1 4 recomendation_4
# 3 2 5 recomendation_5
# 3 3 6 recomendation_6
# 3 4 7 recomendation_7
sortie souhaitée:
# content_id rank recomendation_id name
# 1 1 1 recomendation_1
# 1 2 2 recomendation_2
# 1 3 50 recomendation_50
# 1 4 51 recomendation_51
# 2 1 3 recomendation_3
# 2 2 50 recomendation_50
# 2 3 51 recomendation_51
# 2 4 52 recomendation_52
# 3 1 4 recomendation_4
# 3 2 5 recomendation_5
# 3 3 6 recomendation_6
# 3 4 7 recomendation_7
# 3 5 8 recomendation_8
# 3 6 9 recomendation_9