2

これを行う方法があるかどうか疑問に思っています:

iris %.% group_by(Species) %.% 
  mutate(v1=Sepal.Length / mean(Sepal.Length)) %.% 
  filter(v1 > 1.15) %.% select(Species:v1)

selectビットをスキップしながら。私は以下がうまくいくはずだと思った(しかし、多くの理由でうまくいかない):

iris %.% group_by(Species) %.% 
  select(Species, v1=Sepal.Length / mean(Sepal.Length)) %.% 
  filter(v1 > 1.15)

この例では、単独で実行できることを期待してmutateに置き換えたことに注意してください。式が 1 つの値を返すことを期待selectしているため、これも機能しません。summarize

iris %.% 
  group_by(Species) %.% 
  summarise(Sepal.Length / mean(Sepal.Length)) %.% 
  filter(v1 > 1.15)

data.table明らかに、大したことではありませんが、デフォルトの動作を複製する簡単な方法があるかどうか疑問に思っています。

data.table(iris)[, Sepal.Length / mean(Sepal.Length), by=Species][V1 > 1.15]

by列と計算された値だけを生成します。

      Species       V1
1:     setosa 1.158610
2: versicolor 1.179245
3: versicolor 1.162399
4:  virginica 1.153613
5:  virginica 1.168792
6:  virginica 1.168792
7:  virginica 1.168792
8:  virginica 1.199150
9:  virginica 1.168792
4

1 に答える 1