Chciałbym użyć funkcji DFFRR mutate_at
do zastosowania funkcji do kilku kolumn w ramce danych, w której funkcja wprowadza kolumnę, do której jest bezpośrednio stosowana, oraz inną kolumnę w ramce danych.Używanie funkcji wielu kolumn w dplyr mutate_at zadzwoń pod numer
Jako konkretny przykład, będę wyglądać mutować następujący dataframe
# Example input dataframe
df <- data_frame(x = c(TRUE, TRUE, FALSE),
y = c("Hello", "Hola", "Ciao"),
z = c("World", "ao", "HaOlam")
)
z mutate_at
rozmowy, która wygląda podobnie do tego
df %>%
mutate_at(.vars = vars(y, z),
.funs = ifelse(x, ., NA)
)
zwrócić dataframe, który wygląda mniej więcej tak
# Desired output dataframe
df2 <- data_frame(x = c(TRUE, TRUE, FALSE),
y_1 = c("Hello", "Hola", NA),
z_1 = c("World", "ao", NA)
)
Pożądany mutate_at
wywołanie byłby podobny do następującego zaproszenia do mutate
:
df %>%
mutate(y_1 = ifelse(x, y, NA),
z_1 = ifelse(x, z, NA)
)
Wiem, że można to zrobić w podstawowej R na kilka sposobów, ale ja specjalnie chciał osiągnąć ten cel za pomocą mutate_at
funkcję dplyr dla dobra czytelność, relacje z bazami danych, itp
Poniżej znajdują się podobne pytania zadawane na StackOverflow który nIE adres pytanie postawiłem tutaj:
adding multiple columns in a dplyr mutate call
dplyr::mutate to add multiple values
Use of column inside sum() function using dplyr's mutate() function
'df%>% mutate_at (zmiennych (Y, Z), funs (ifelse (x,. NA))) ' – eipi10
@ eipi10 Ah, ok. Tak więc powyższy kod zadziałałby, gdybym owinął 'ifelse (x,., NA)' w wywołaniu funkcji 'funs()'. Dziękuję Ci! Sprawdziłem twoje rozwiązanie i to działa idealnie. Twoje rozwiązanie jest dokładnie tym, czego szukałem! – bschneidr