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

  • eyes4beautee

    eyes4beautee

    17 HAZİRAN 2011
  • Helen Bradley

    Helen Bradle

    4 Mart 2008
  • ::..ηєѕѕ мιχ..::

    ::..ηєѕѕ

    15 Aralık 2006