2014-04-18 32 views
5

ile sayısal değişkeni kategorize ediyorum data.frame nesnesinde sayısal bir değişkeni dplyr kullanarak kategorilere ayırmak istiyorum (ve nasıl yapılacağı hakkında hiçbir fikriniz yok).R dplyr - mutant

dplyr olmadan, muhtemelen böyle bir şey yapsın:

df <- data.frame(a = rnorm(1e3), b = rnorm(1e3)) 
df$a <- cut(df$a , breaks=quantile(df$a, probs = seq(0, 1, 0.2))) 

ve yapılabilir olacaktır. Ancak, data.frame üzerinden gerçekleştirdiğim diğer eylemlerin chain sırasındaki bazı dplyr işlevinin (mutate, sanırım) kullanımıyla yapmayı kesinlikle tercih ediyorum.

+1

ben 'mutasyon (df, a = kesim söyleyebilirim (google ve çevrimiçi kılavuzu okuyarak, ben dplyr'' hiç kullanmadıysanız) (a , breakks = quantile (a, probs = sıra (0, 1, 0.2)))) '... –

+0

Nope =)' df%.% mutasyon (df, a = kes (a, kesmeler = quantile (a, probs) = seq (0,1,0,2)))) 'döner' Hata: sütun için desteklenmeyen tür 'df' (VECSXP, sınıflar = data.frame) ' –

+0

Mea culpa! Acelemde, '%.%' 'Chain' sekansını kullanırken' muct''''' '' d''ünü kaldırmayı unutmuşum ... Özür dilerim ve teşekkürler! –

cevap

13
set.seed(123) 
df <- data.frame(a = rnorm(10), b = rnorm(10)) 

df %>% mutate(a = cut(a, breaks = quantile(a, probs = seq(0, 1, 0.2)))) 

veren: bir tahmin az

    a   b 
1 (-0.586,-0.316] 1.2240818 
2 (-0.316,0.094] 0.3598138 
3  (0.68,1.72] 0.4007715 
4 (-0.316,0.094] 0.1106827 
5  (0.094,0.68] -0.5558411 
6  (0.68,1.72] 1.7869131 
7  (0.094,0.68] 0.4978505 
8    <NA> -1.9666172 
9 (-1.27,-0.586] 0.7013559 
10 (-0.586,-0.316] -0.4727914 
+0

“dplyr” yararı nedir? Df%.% Murat (a = ...) 'df 'den fazla (mutasyona (df, a = ...)'. İlk yol referansı ile değişiyor mu? –

+0

Eğer df%.% Mutasyon (a = ...) 've' mutate (df, a = ...) 'arasındaki farkın ne olduğunu kastediyorsunuz, sadece bir stil sorunu ama ilk tercih edilen bir tanesi gibi görünüyor. . –

+1

Bir 'data.farme' üzerinden bir dizi eylemi yürütürken okunabilirliği artırır - iç içe işlevler kullanmak yerine, bunları sırasıyla %%% 've - bu nedenle - okuma kodunun * * soldan sağa * şekilde (değil: * içeriden dışarıya *). Daha fazla bilgi için: http://blog.rstudio.org/2014/01/17/introducing-dplyr/ –