[英]Summarize row values into columns in R
我得到了什么:
一個數據集,指示 100 天內商店每天售出的商品數量。
因此,商店 1 在第 1 天售出 114 件商品,在第 2 天售出 178 件商品,依此類推,直到第 100 天售出 143 件商品。
此外,該數據集有 1000 家這樣的商店的類似數據。 但是,對於某些商店(如商店 1000),銷售計數僅在第 65 天可用。
| Store | Day |Count|
| -------- | -------------- |-------|
| 1 | 1 |114|
| 1 | 2 |178|
| .. | .. |..|
| 1 | 100 |143|
| 2 | 1 |197|
| 2 | 2 |159|
| .. | .. |..|
| 2 | 100 |39|
| 1000 | 1 |53|
| 1000 | 2 |132|
| .. | .. |..|
| 1000 | 65 |104|
店鋪 | m_p1 | m_p2 | .. | m_p10 |
---|---|---|---|---|
1個 | 120 | 157 | .. | 123 |
2個 | 90后 | 140 | .. | 121 |
.. | .. | .. | .. | .. |
1000 | 45 | 102 | .. | 北美 |
library(tidyverse)
#sample data
set.seed(123)
df <- data.frame(store = rep(c(1,2), each = 100),
day = rep(1:100, 2),
Count = sample(80:100, 200, T))
str(df)
#> 'data.frame': 200 obs. of 3 variables:
#> $ store: num 1 1 1 1 1 1 1 1 1 1 ...
#> $ day : int 1 2 3 4 5 6 7 8 9 10 ...
#> $ Count: int 94 98 93 82 89 97 90 84 99 93 ...
df %>%
group_by(store, phase = (1 + ((day - 1) %/% 10))) %>%
summarise(val = median(Count), .groups = 'drop') %>%
pivot_wider(names_from = phase, names_prefix = 'm_p', values_from = val)
#> # A tibble: 2 x 11
#> store m_p1 m_p2 m_p3 m_p4 m_p5 m_p6 m_p7 m_p8 m_p9 m_p10
#> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 93 87.5 91.5 87.5 93 92.5 91.5 90 91 93
#> 2 2 87.5 91.5 92 90.5 91 90 88.5 90 91 94.5
您可以創建一組 10 天,計算Count
數值的median
並獲取寬格式數據。
library(dplyr)
library(tidyr)
df %>%
mutate(group = ceiling(Day/10)) %>%
group_by(Store, group) %>%
summarise(Count = median(Count), .groups = 'drop') %>%
pivot_wider(names_from = group, values_from = Count, names_prefix = 'm_p')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.