J'ai une trame de données, my_df
:
my_df <- structure(list(C1 = c("A", "X", "X", "A", "A"), F2 = c("A", "A",
"A", "A", "A"), T3 = c("A", "A", "X", "X", "A"), S4 = c("A",
"A", "A", "A", "X"), B5 = c("A", "A", "A", "A", "A")), class = "data.frame", row.names = c("ID1",
"ID2", "ID3", "ID4", "ID5"))
> my_df
C1 F2 T3 S4 B5
ID1 A A A A A
ID2 X A A A A
ID3 X A X A A
ID4 A A X A A
ID5 A A A X A
Je veux créer une nouvelle colonne, new_col
qui dit "même" si toutes les valeurs de toutes les autres colonnes sont identiques, sinon elle dit "diff". C'est-à-dire que la trame de données résultante ressemblerait à :
> my_df
C1 F2 T3 S4 B5 new_col
ID1 A A A A A same
ID2 X A A A A diff
ID3 X A X A A diff
ID4 A A X A A diff
ID5 A A A X A diff
Quelle est la meilleure façon d'y parvenir en utilisant dplyr?
library(tidyverse)
my_df <- structure(list(C1 = c("A", "X", "X", "A", "A"),
F2 = c("A", "A", "A", "A", "A"),
T3 = c("A", "A", "X", "X", "A"),
S4 = c("A", "A", "A", "A", "X"),
B5 = c("A", "A", "A", "A", "A")),
class = "data.frame",
row.names = c("ID1","ID2", "ID3", "ID4", "ID5"))
my_df %>%
rowwise() %>%
mutate(new_col = if_else(
length(unique(c_across())) == 1,
"same",
"diff"
))
#> # A tibble: 5 × 6
#> # Rowwise:
#> C1 F2 T3 S4 B5 new_col
#> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 A A A A A same
#> 2 X A A A A diff
#> 3 X A X A A diff
#> 4 A A X A A diff
#> 5 A A A X A diff
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