Dplyr birden çok sütun, sicim vektör girişini kullanarak grup | Netgez.com
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

  • Canceriansoul

    Canceriansou

    15 Ocak 2011
  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • geraldnonadoez

    geraldnonado

    3 Temmuz 2013