Мы можем использовать data.table
.Преобразуйте «data.frame» в «data.table» с помощью setDT
, сгруппированного по «store» и «paper.type», укажите выражение i
(paper == 'drawing'
) для подмножества строк и суммируйте «единицы».продано ', получив sum
его
library(data.table)
setDT(df)[paper == "drawing", .(units.sold = sum(units.sold)), .(store, paper.type)]
# store paper.type units.sold
#1: Dublin pads 1
#2: Davenport roll 2
#3: Portland pads 1
#4: Syracuse journal 1
данных
df <- structure(list(date = c("12/30/2015", "12/30/2015", "12/30/2015",
"12/30/2015", "12/31/2015", "12/31/2015", "12/31/2015", "12/31/2015",
"12/31/2015", "12/31/2015"), year = c(2015L, 2015L, 2015L, 2015L,
2015L, 2015L, 2015L, 2015L, 2015L, 2015L), rep = c("Ran", "Ran",
"Arijit", "Thomas", "Ruisi", "Mohit", "Aman", "Barakat", "Yunzhu",
"Aman"), store = c("Dublin", "Dublin", "Syracuse", "Davenport",
"Dublin", "Davenport", "Portland", "Portland", "Syracuse", "Portland"
), paper = c("watercolor", "drawing", "watercolor", "drawing",
"watercolor", "drawing", "drawing", "watercolor", "drawing",
"watercolor"), paper.type = c("sheet", "pads", "pad", "roll",
"sheet", "roll", "pads", "block", "journal", "block"), unit.price = c(0.77,
10.26, 12.15, 20.99, 0.77, 20.99, 10.26, 19.34, 24.94, 19.34),
units.sold = c(5L, 1L, 2L, 1L, 7L, 1L, 1L, 1L, 1L, 1L), total.sale = c(3.85,
10.26, 24.3, 20.99, 5.39, 20.99, 10.26, 19.34, 24.94, 19.34
)), class = "data.frame", row.names = c("9991", "9992", "9993",
"9994", "9995", "9996", "9997", "9998", "9999", "10000"))