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

  • Ammine Getahun

    Ammine Getah

    21 HAZİRAN 2011
  • Random Act of Kindness Video Contest

    Random Act o

    18 EYLÜL 2012
  • mobilenet.cz

    mobilenet.cz

    26 NİSAN 2008