Rでは、適切な名前の値をvector(またはdata.frameなど)に格納してdata.frame列を操作それが簡単ならば)。外部ベクトル(dplyr)と異なる値を持つデータフレーム列を操作する方法
は、私は、変数disp
、hp
、およびwt
mtcars
データセットから最初のsummarise
にしたい、のは、言ってみましょう。
vars <- c("disp", "hp", "wt")
mtcars %>%
summarise_at(vars, funs(sum(.))
(ミックスにgroup_by(cyl)
を投げる、またはあなたがより多くの行を持っているしたい場合はmutate_at
を使用)
今、私は与えられた、特定の値と結果の各列を掛けたいのですがby
multiplier <- c("disp" = 2, "hp" = 3, "wt" = 4)
summarise_at
の機能でこれらを参照することはできますか?
結果は次のようになります(と私はそこに取得しながら、直接変数名を参照する必要がありますする必要はありません):
disp hp wt
14766.2 14082 411.808
UPDATE:
を多分私のMWEはあまりにも最小でした。
cyl disp hp wt
1 4 2313.0 2727 100.572
2 6 2566.4 2568 87.280
3 8 9886.8 8787 223.956
UPDATE 2:
たぶん私は十分に明示しなかったのは、私は結果はこのようにする必要がありますcyl
mtcars %>%
group_by(cyl) %>%
summarise_at(vars, sum)
でグループ化されたdata.frameと同じ操作をしたいとしましょうここでもどちらかですが、data.frameの列には、ベクトルの各値(ベクトルに記述されている列のみ)が乗算される必要があります。 disp
は2でhp
を3倍、wt
を4倍する必要がありますが、他のすべての変数(例:cyl
)は乗算の影響を受けません。
私は間違っているかもしれませんが、これは 'group_by(cyl)'ではうまくいかないでしょうか? "エラー:' .x'(4)と '.y'(3)の長さが異なる – dpprdan
@dapperdanあなたの質問は' group_by'に関するものではありません – akrun
まあ、私は十分に明示的ではなかったかもしれませんが、 "(ミックスにgroup_by(cyl)を投げたり、もっと行があるようにするにはmutate_atを使用してください)"、そうでしたか? – dpprdan