我有以下資料集
| 寵物商店 | 年 | 物品 | 價格 |
|---|---|---|---|
| 一個 | 2021 | 狗 | 300 |
| 一個 | 2021 | 狗 | 250 |
| 一個 | 2021 | 魚 | 20 |
| 一個 | 2020 | 龜 | 50 |
| 一個 | 2020 | 狗 | 250 |
| 一個 | 2020 | 貓 | 280 |
| 一個 | 2019 | 兔子 | 180 |
| 一個 | 2019 | 貓 | 165 |
| 一個 | 2019 | 貓 | 270 |
| 乙 | 2021 | 狗 | 350 |
| 乙 | 2021 | 魚 | 80 |
| 乙 | 2021 | 魚 | 70 |
| 乙 | 2020 | 貓 | 220 |
| 乙 | 2020 | 龜 | 90 |
| 乙 | 2020 | 龜 | 80 |
| 乙 | 2020 | 魚 | 55 |
| 乙 | 2019 | 魚 | 75 |
| C | 2021 | 狗 | 280 |
| C | 2020 | 貓 | 260 |
| C | 2020 | 貓 | 270 |
| C | 2019 | 魚 | 65 |
| C | 2019 | 貓 | 270 |
資料代碼如下
Pet_Shop = c(rep("A",9), rep("B",8), rep("C",5))
Item = c("Dog","Dog","Fish","Turtle","Dog","Cat","Rabbit","Cat","Cat","Dog","Fish","Fish","Cat","Turtle","Turtle","Fish","Fish","Dog","Cat","Cat","Fish","Cat")
Price = c(300,250,20,50,250,280,180,165,270,350,80,70,220,90,80,55,75,280,260,270,65,270)
Data = data.frame(Pet_Shop, Item, Price)
這里有誰知道我如何使用 pivot_wider 或 spread(或任何其他方法)來實作下表?它按年份對店鋪進行分組,并取同一店鋪當年同類商品的平均值。我有合并年份的問題。
| 寵物商店 | 年 | 狗 | 魚 | 龜 | 貓 | 兔子 |
|---|---|---|---|---|---|---|
| 一個 | 2021 | 平均(300,250)= 275 | 20 | 不適用 | 不適用 | 不適用 |
| 一個 | 2020 | 250 | 不適用 | 50 | 280 | 不適用 |
| 一個 | 2019 | 不適用 | 不適用 | 不適用 | 217.5 | 不適用 |
| 乙 | 2021 | 350 | 75 | 不適用 | 不適用 | 不適用 |
| 乙 | 2020 | 不適用 | 55 | 85 | 220 | 不適用 |
| 乙 | 2019 | 不適用 | 75 | 不適用 | 不適用 | 不適用 |
| C | 2021 | 280 | 不適用 | 不適用 | 不適用 | 不適用 |
| C | 2020 | 不適用 | 不適用 | 不適用 | 265 | 不適用 |
| C | 2019 | 不適用 | 60 | 不適用 | 270 | 不適用 |
uj5u.com熱心網友回復:
在pivot_wider您可以傳遞一個函式(values_fn) 以應用于 和 的每個Pet_Shop組合Year。
result <- tidyr::pivot_wider(Data, names_from = Item,
values_from = Price, values_fn = mean)
result
# Pet_Shop Year dog fish turtle cat rabbit
# <chr> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 A 2021 275 20 NA NA NA
#2 A 2020 250 NA 50 280 NA
#3 A 2019 NA NA NA 218. 180
#4 B 2021 350 75 NA NA NA
#5 B 2020 NA 55 85 220 NA
#6 B 2019 NA 75 NA NA NA
#7 C 2021 280 NA NA NA NA
#8 C 2020 NA NA NA 265 NA
#9 C 2019 NA 65 NA 270 NA
也可以使用data.table dcast-
library(data.table)
dcast(setDT(Data), Pet_Shop Year ~ Item,
value.var = "Price", fun.aggregate = mean)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/412452.html
標籤:
下一篇:以接近值順序排列資料框-R
