2015-05-30 18 views
5

tanımlamadan mevcut tüm değişkenlerin bir fonksiyonu olarak yeni bir değişken oluşturun Sütun adlarını açıkça tanımlamak istemez; çünkü onların sayısı ve adları her seferinde farklı olabilir. Bunu dplyr kullanarak nasıl yapabilirim? Deneyebilirsindplyr: Ben, ancak</p> <pre><code>as.numeric(paste0(df[i,],collapse="")) </code></pre> <p>: Ben yenilerinden aşağıdaki fonksiyonu olarak yeni bir değişken oluşturmak istiyorum aşağıdaki dataframe olarak isimlerini

apply(df,1,function(x) as.numeric(paste0(x,collapse=""))) 


df <- structure(list(X1 = c(50, 2, 2, 50, 5, 5, 2, 50, 5, 5, 50, 2, 
5, 5, 50, 2, 2, 50, 9, 9, 9, 9, 9, 9), X2 = c(2, 50, 5, 5, 50, 
2, 5, 5, 50, 2, 2, 50, 9, 9, 9, 9, 9, 9, 50, 2, 2, 50, 5, 5), 
    X3 = c(5, 5, 50, 2, 2, 50, 9, 9, 9, 9, 9, 9, 50, 2, 2, 50, 
    5, 5, 2, 50, 5, 5, 50, 2), X4 = c(9, 9, 9, 9, 9, 9, 50, 2, 
    2, 50, 5, 5, 2, 50, 5, 5, 50, 2, 5, 5, 50, 2, 2, 50)), class = "data.frame", .Names = c("X1", 
"X2", "X3", "X4"), row.names = c(NA, -24L)) 
+0

'df%>% mutate (newcol = as.numeric (do.call (paste0, df)))' 'ne arıyorsunuz? Her neyse, 'base' R'de eşdeğer, sizin belirttiğiniz şey değil,' as.numerik (do.call (paste0, df)) '(çok daha verimli). – nicola

+1

Evet, teşekkürler! Kullanabilirsiniz . macun içine df yerine: df%>% mutate (newcol = do.call (paste0 ,.)). Bunu bir cevap olarak kabul edeceğim. – Brani

cevap

3

:

df %>% mutate(newcol=as.numeric(do.call(paste0,df))) 

Veya (senin önerdiğin gibi, belki daha fazla dplyr tarzı):

df %>% mutate(newcol=as.numeric(do.call(paste0,.))) 

baz r eşdeğer böyle bir şey olurdu

İlgili konular