Często próbuję utworzyć kategoryczną zmienną ze zmiennej liczbowej + zestaw zakresów podany przez użytkownika.R: tworzenie zmiennej kategorialnej ze zmiennej numerycznej i niestandardowych/przerwanych/jednowartościowych przedziałów czasowych
Na przykład, powiedzmy że posiada data.frame ze zmienną numerycznej df$V
i chce utworzyć nową zmienną df$VCAT
takie, że:
df$VCAT
= 0 jeślidf$V
jest równe 0df$VCAT
= 1 jeślidf$V
wynosi od 0 do 10 (tj (0,10))df$VCAT
= 2 jestdf$V
jest równa 10 (tj [10,10]),df$VCAT
= 3 oznaczadf$V
wynosi od 10 do 20 (tj. (10,20))df$VCAT
= 4 jestdf$V
jest większa lub równa niż 20 (czyli [20, Inf])
Jestem obecnie robi to za trudne kodowania funkcję "punktacji" sobie przez robi coś takiego:
df = data.frame(V = seq(1,100))
df = df %>% mutate(VCAT = (V>0) + (V==10) + 2*(V>10) (V>=20))`
Zastanawiam się, czy istnieje prostszy sposób hacky to zrobić w R, najlepiej przy użyciu dplyr
(tak, że mogę poleceń łańcucha). Idealnie, szukam krótkiej funkcji, która może być użyta w mutate
, która zajmie zmienną V
i wektor opisujący zakresy takie jak buckets
. Należy pamiętać, że buckets
może nie być opisany w najlepszy sposób, ponieważ nie jest dla mnie jasne, w jaki sposób pozwoliłoby użytkownikom na dostosowanie punktów końcowych zakresów.
Czy wiesz o 'cut()'? Sprawdź '? Cut' lub nawet' Hmisc :: cut2() '. – JasonAizkalns
Czy chcesz, aby twoja funkcja pobierała wektor plus 'wiadra' i zwracała ramkę danych, która wygląda jak wynik powyższego? A może chcesz funkcji, która pobiera wektor i 'wiadra' które można przekazać do' mutate'? – jamieRowen
@jamieRowen najlepiej coś, co można przekazać do 'mutate'. –