私はしばらくこれを探していましたが、今のところ明確な答えを見つけることができていません。おそらく間違った用語を探していましたが、ここの誰かがすぐに私を助けてくれるかもしれません。質問は基本的なものです。
サンプルデータセット:
set <- structure(list(VarName = structure(c(1L, 5L, 4L, 2L, 3L),
.Label = c("Apple/Blue/Nice",
"Apple/Blue/Ugly", "Apple/Pink/Ugly", "Kiwi/Blue/Ugly", "Pear/Blue/Ugly"
), class = "factor"), Color = structure(c(1L, 1L, 1L, 1L, 2L), .Label = c("Blue",
"Pink"), class = "factor"), Qty = c(45L, 34L, 46L, 21L, 38L)), .Names = c("VarName",
"Color", "Qty"), class = "data.frame", row.names = c(NA, -5L))
これにより、次のようなデータセットが得られます。
set
VarName Color Qty
1 Apple/Blue/Nice Blue 45
2 Pear/Blue/Ugly Blue 34
3 Kiwi/Blue/Ugly Blue 46
4 Apple/Blue/Ugly Blue 21
5 Apple/Pink/Ugly Pink 38
私がやりたいことはかなり簡単です。数量列を合計(または平均または標準偏差)したいと思います。ただし、以下の条件でも同じ操作をしたいと思います。
- VarNameには「Apple」が含まれます
- VarNameには「醜い」が含まれています
- 色は「青」に等しい
この種の計算を実行する方法について簡単に紹介してくれる人はいますか?
その一部はaggregate()関数で実行できることを認識しています。例:
aggregate(set[3], FUN=sum, by=set[2])[1,2]
ただし、これを行うには、これよりも簡単な方法があると思います。次のような関数に追加できるフィルターはありsum()
ますか?