Vorrei utilizzare la sintassi di magrittr e dplyr per copiare singoli valori tra le righe in un sottoinsieme di colonne in base ai valori in altre colonne. Questo è un semplice esempio; Voglio applicare questa idea a molte colonne di un set di dati di grandi dimensioni con più condizioni all'interno di una lunga serie di comandi.Mutazioni condizionali del frame di dati in R con magrittr e dplyr
Prendere la dataframe df <- data.frame(a = 1:5, b = 6:10, x = 11:15, y = 16:20)
:
a b x y
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
5 10 15 20
Per la riga in cui a = 5
, vorrei sostituire i valori di x
e y
con quelli nella fila in cui b = 7
, per dare:
a b x y
1 6 11 16
2 7 12 17
3 8 13 18
4 9 14 19
5 10 12 17
Questo tentativo non riesce:
foo <- function(x){ifelse(df$a == 5, df[df$b == 7, .(df$x)], x)}
df %<>% mutate_each(funs(foo), x, y)
Il più vicino che posso ottenere è:
bar <- function(x){ifelse(df$a == 5, df[df$b == 7, "x"], x)}
df %<>% mutate_each(funs(bar), x, y)
ma questo non è corretto in quanto sostituisce entrambi i valori con il valore x
, anziché x
e y
rispettivamente.
Grazie per il consiglio.
qual è il dooffernece tra '% <>%' e '%>%'? –
'x% <>% f' viene dal pacchetto' magrittr' ed è equivalente al modello comune 'x <- x %>% f'. –
'%>%' viene anche dal pacchetto 'magrittr' ... –