R comparaison de valeurs par groupe
Bonsoir.
Dans une dataframe groupée je cherche si des valeurs d'une colonne sont présentes dans une autre colonne pour chaque groupe indépendamment bien sûr.
Voici in exemple factice et simplifié de mes données :
Code:
1 2 3 4 5 6 7 8 9 10 11
| df <- data.frame()
for (i in 1:4) {
for (j in 1:4) {
x <- sample(1:12,4)
y <- sample(1:12,4)
gr <- i
x <- cbind(gr,x,y)
}
df <- rbind(df,x)
}
df <- df %>% group_by(gr) |
Voici le résultat attendu :
gr x1 x2 x3 x4
1 1 1 0 0
2 0 0 1 0
3 1 1 0 0
4 0 0 0 1
Je pourrais le faire avec une boucle :
Code:
1 2 3 4 5 6 7 8
| pre <- unique(df$gr)
result <- data.frame()
for (i in pre) {
tmp <- df %>% filter(gr == i)
result <- rbind(result,as.integer(tmp$x %in% tmp$y ))
}
result <- cbind(pre,result)
names(result) <- c("gr","x1","x2","x3","x4") |
mais je suis sur que c'est faisable avec quelque chose de la famille des apply. Mon problème c'est que j'ai beau triturer tout cela dans tous les sens, je ne m'en sort pas. Un peu d'aide serait la bienvenue.
Merci