Je me forme depuis peu à R.
j'ai un jeu de données avec des doublon sur la variables SIRET.
Je voudrais pour chaque SIRET :
- connaitre le nombre de doublon. ce nombre sera mis dans dans une nouvelle variable: Nb_doublon
- Mettre 1 en face de chaque SIRET unique: entreprise_Unique
Sur un jeu de données fictif:
Code : Tout sélectionner
> df <- data.frame(x=c("a","b","c","b","d","c"),y=c(1,2,3,2,4,3))
> df
x y
1 a 1
2 b 2
3 c 3
4 b 2
5 d 4
6 c 3
Dans cette exemple, dans la colonnes x nous avons 2 doublons avec b et c.
Il faut d'abord mettre la base dans l'ordre croissant de la variable ayant les doublons, je pensais utiliser order
Ensuite, je me suis servie de votre fonction duplicated2 et j'ai essayé de la changer afin d'avoir les variables qui m'interessent, sans succes.
Je vous remets la fonction duplicated2
Code : Tout sélectionner
duplicated2 <- function(x){
if (sum(dup <- duplicated(x))==1)
return(dup)
if (class(x) %in% c("data.frame","matrix"))
duplicated(rbind(x[dup,],x))[-(1:sum(dup))]
else duplicated(c(x[dup],x))[-(1:sum(dup))]
}
Mais elle en me donne pas le résultat que je voudrais, exemple de ce que je cherche à faire
Code : Tout sélectionner
df <- data.frame(x=c("a","b","b","c","c","d"),y=c(1,2,2,3,3,4),entreprise_unique=c(1,0,1,0,1,1),nb_doublon=c(1,0,2,0,2,1))
df
x y entreprise_unique nb_doublon
1 a 1 1 1
2 b 2 0 0
3 b 2 1 2
4 c 3 0 0
5 c 3 1 2
6 d 4 1 1
Merci pour votre aide.
Nathalie