J'ai un bloc de données dans R où une colonne est un facteur numérique pour le numéro d'identification avec plusieurs rencontres du même identifiant, et une colonne est l'âge et la dernière colonne est le statut qui se compose de 10 niveaux. J'essaie de supprimer toutes les lignes d'ID en double si un seul des ID en double a une certaine valeur à tout moment dans la colonne d'état.
Voici mon code, j'essaie de supprimer tous les identifiants en double si l'un d'entre eux a le niveau d'état répertorié
D1 = DD %>%
group by(ID, status)%>%
filter(!duplicated(ID) & if(any(status = c('11','13','14','19','20'))))
example data actual data is has over 100000 rows
Voici un exemple de jeu de données. Le seul doublon qui ne doit pas être supprimé est ID-987 Id.data<-data.frame( ID = c(564,758,987,1568,4987,413578,987.65647,4895,564,135,1568), gender= c("male ","femelle","femelle","mâle","mâle","femelle","femelle","mâle", "femelle","mâle","mâle","mâle"), status = c (11,8,6,13,14,8,12,8,10,19,16,10), chaînesAsFactors = FALSE )
D'après la description, peut-être que cela fonctionne
library(dplyr)
DD %>%
group_by(ID) %>%
filter(!(n() > 1 & any(status %in% c('11', '13', '14', '19', '20')))) %>%
ungroup
-sortir
# A tibble: 4 x 2
# ID status
# <int> <chr>
#1 3 9
#2 4 6
#3 4 5
#4 5 20
DD <- structure(list(ID = c(1L, 1L, 1L, 2L, 2L, 3L, 4L, 4L, 5L), status = c("9",
"11", "10", "13", "10", "9", "6", "5", "20")), class = "data.frame",
row.names = c(NA,
-9L))
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots