SORU
18 Ocak 2014, CUMARTESİ


Dplyr birden çok sütun, sicim vektör girişini kullanarak grup

Dplyr içine plyr benim anlayış aktarmak için çalışıyorum, ama birden çok sütuna göre grup nasıl olduğunu çözemedim.

# make data with weird column names that can't be hard coded
data = data.frame(
  asihckhdoydkhxiydfgfTgdsx = sample(LETTERS[1:3], 100, replace=TRUE),
  a30mvxigxkghc5cdsvxvyv0ja = sample(LETTERS[1:3], 100, replace=TRUE),
  value = rnorm(100)
)

# get the columns we want to average within
columns = names(data)[-3]

# plyr - works
ddply(data, columns, summarize, value=mean(value))

# dplyr - raises error
data %.%
  group_by(columns) %.%
  summarise(Value = mean(value))
#> Error in eval(expr, envir, enclos) : index out of bounds

Benim eksik dplyr-vari bir sözdizimi içine plyr örneği çevirmek için ne yapacağım?

CEVAP
20 Ocak 2014, PAZARTESİ


Dplyr bu desteği şu anda çok zayıf, sonunda sözdizimi gibi bir şey olacak sanırım

df %.% group_by(.groups = c("asdfgfTgdsx", "asdfk30v0ja"))

Ama muhtemelen bir süre daha orada tüm sonuçları düşünmeye ihtiyacım var, çünkü bu olmayacak.

Bu arada, sembollerin bir listesini alır regroup(), kullanabilirsiniz

library(dplyr)

df <-  data.frame(
  asihckhdoydk = sample(LETTERS[1:3], 100, replace=TRUE),
  a30mvxigxkgh = sample(LETTERS[1:3], 100, replace=TRUE),
  value = rnorm(100)
)

df %.%
  regroup(list(quote(asihckhdoydk), quote(a30mvxigxkgh))) %.%
  summarise(n = n())

Eğer bir karakter sütun adları vektör varsa, lapply() as.symbol() doğru yapı çevirebiliriz:

vars <- setdiff(names(df), "value")
vars2 <- lapply(vars, as.symbol)

df %.% regroup(vars2) %.% summarise(n = n())

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • emimusic

    emimusic

    10 Mart 2006
  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006
  • TastyTuts | Creative video tutorials by Gareth David

    TastyTuts |

    6 Temmuz 2011