Rozważmy prosty przykład:Tworzenie nowych zmiennych z mutate_at zachowując oryginalne
library(dplyr)
dataframe <- data_frame(helloo = c(1,2,3,4,5,6),
ooooHH = c(1,1,1,2,2,2),
ahaaa = c(200,400,120,300,100,100))
# A tibble: 6 x 3
helloo ooooHH ahaaa
<dbl> <dbl> <dbl>
1 1 1 200
2 2 1 400
3 3 1 120
4 4 2 300
5 5 2 100
6 6 2 100
Tutaj chcę zastosować funkcję ntile
wszystkich kolumn, które zawiera oo
, ale chciałbym te nowe kolumny, aby być o nazwie cat
+ odpowiednia kolumna.
wiem, że mogę to zrobić
dataframe %>% mutate_at(vars(contains('oo')), .funs = funs(ntile(., 2)))
# A tibble: 6 x 3
helloo ooooHH ahaaa
<int> <int> <dbl>
1 1 1 200
2 1 1 400
3 1 1 120
4 2 2 300
5 2 2 100
6 2 2 100
Ale to, co potrzebne jest to
# A tibble: 8 x 5
helloo ooooHH ahaaa cat_helloo cat_ooooHH
<dbl> <dbl> <dbl> <int> <int>
1 1 1 200 1 1
2 2 1 400 1 1
3 3 1 120 1 1
4 4 2 300 2 2
5 5 2 100 2 2
6 5 2 100 2 2
7 6 2 100 2 2
8 6 2 100 2 2
Czy istnieje rozwiązanie, które nie wymaga przechowywania danych pośrednich, i scalić z powrotem do oryginału ramka danych?
Domyślam się, że zawsze można napisać coś w stylu regex, aby zmienić nazwę zmiennych 'col_cat'? –
@ ℕʘʘḆḽḘ Tak. Prawdopodobnie w "rename_at" dla wygody; dodany przykład w edycji. – aosmith
Zmiana nazwy pojawia się tylko do uzupełnienia, jeśli istnieje więcej niż jedna kolumna zawierająca dopasowanie. Czy istnieje sposób na dodanie go do pojedynczego meczu? Przykład: 'dataframe%>% mutate_at (vars (zawiera ('ah')), .funs = funs (cat = ntile (., 2)))' – bheavner