0

関数から面白い機能を見つけましたddply。要約出力データ フレームでは、入力データ フレームと同じ変数名を使用できないようです。

set.seed(1)
ex <- data.frame(Type = c(rep("a", 10), rep("b", 10)), time = rnorm(20, 6,3))
ddply(ex, .(Type), summarize, time = mean(time), n = length(time))

  Type     time n
1    a 6.396608 1
2    b 6.746535 1

length1 として出力されます。一方、変数名 (時間) を別の名前に変更すると、次のようになります。

ddply(ex, .(Type), summarize, tim = mean(time), n = length(time))
  Type      tim  n
1    a 6.396608 10
2    b 6.746535 10

出力の列を再配置すると、それも役立ちます。

ddply(ex, .(Type), summarize, n = length(time), time = mean(time))
  Type  n time
1    a 10 6.396608
2    b 10 6.746535

または、入力の変数の名前を変更します。

set.seed(1)
ex <- data.frame(Type = c(rep("a", 10), rep("b", 10)), tim = rnorm(20, 6,3))
ddply(ex, .(Type), summarize, time = mean(tim), n = length(tim))

  Type     time  n
1    a 6.396608 10
2    b 6.746535 10

しかし:

ddply(ex, .(Type), summarize, tim = mean(tim), n = length(tim))

  Type      tim n
1    a 6.396608 1
2    b 6.746535 1

私は取り組んでいます:

R version 3.0.0 (2013-04-03)
Platform: x86_64-w64-mingw32/x64 (64-bit)
plyr_1.8  

plyrこれはR 3.0.0 以降の既知の機能ですか?

4

1 に答える 1

2

あなたの最初の例では、これはおそらく計算が順番に行われるためです。最初に time=mean(time) を計算し、時間を長さとして計算します。したがって、長さ(時間)を要求すると1になりますが、オブジェクト時間を作成する前に長さを要求すると、3番目と5番目の例で示されるように、期待される結果が得られます。

于 2013-04-26T13:20:15.363 に答える