0
アイリスデータセットをdata.tableフォーマットに変換しました。私の目的は、すべてのカラムを平均してdata.tableを使用してSpeciesでグループ化することでした。以下は名前を入力せずにdata.tableのカラムを使用するショートカット
DT <-as.data.table(iris)
私の所望の出力
DT[,.(mean(Sepal.Length),mean(Sepal.Width),mean(Petal.Length),mean(Petal.Width)),by =.(Species)]
Species V1 V2 V3 V4
1: setosa 5.006 3.428 1.462 0.246
2: versicolor 5.936 2.770 4.260 1.326
3: virginica 6.588 2.974 5.552 2.026
しかし、我々は、列の数が多い時には、上記の方法を使用して、すべての列名を入力するには時間が混乱しています。私は以下のちょうど平均を取るためにどのような種類のものの上に使用して、すべての列名を入力するのを取り除くためにどのような方法があり、出力がわずかに異なる方法
DT[, .(vapply(DT[,!'Species',with=FALSE],mean,FUN.VALUE =1)),by = .(Species)]
Species V1
1: setosa 5.843333
2: setosa 3.057333
3: setosa 3.758000
4: setosa 1.199333
5: versicolor 5.843333
6: versicolor 3.057333
7: versicolor 3.758000
8: versicolor 1.199333
9: virginica 5.843333
10: virginica 3.057333
11: virginica 3.758000
12: virginica 1.199333
に配置されているcommand.But使用して、これを試してみましたdata.tableを使用して種別にグループ化してください。
「= = FALSE」は使用しないでください。私はすでにそれを知っていた。
リストとlapplyリターンリストを返す必要があり、これが重複かもしれないと思います.SDcols = names(DT)[1:4]] 'または類似のものはあなたを並べ替えるべきです。 – thelatemail
正確に一致するものが見つかるまで、おそらくhttp://stackoverflow.com/questions/16783598/r-datatable-apply-a-function-to-a-subset-of-columnsの複製です。 – thelatemail
私には役に立たなかった。それを実行できますか? – learner