1

aggregate「数値」である変数名を持つデータ フレームで作業するのに問題があります。次に例を示します。

library(stringr)

# this works
df <- data.frame(x001=runif(10),x002=runif(10),category=rep(1:2,5))
aggregate(. ~ category, data=df, mean)

# this doesn't
names(df) <- str_replace(names(df),"x","")
aggregate(. ~ category, data=df, mean)

私は何を間違っていますか?

4

1 に答える 1

2

非標準名の使用に関する@orizo​​nの指摘には同意しますが、質問に答えるには、名前にチェックマークを付けます。

aggregate(cbind(`001`, `002`) ~ category, data=df, mean)

#   category     `001`     `002`
# 1        1 0.6600887 0.3927709
# 2        2 0.5115426 0.5189629

編集:

これはより良く、より一般的です:

agg <- aggregate(. ~ category, data=setNames(df, make.names(names(df))), mean)
#   category      X001      X002
# 1        1 0.7426327 0.4081779
# 2        2 0.6666881 0.5903070

また、アグリゲーションで本当に悪い名前が必要な場合:

names(agg) <- gsub('^X', '', names(agg))
于 2013-01-17T05:11:44.300 に答える