簡體   English   中英

將行值匯總到 R 中的列中

[英]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|

我需要什么:
將 100 天的時間段分成 10 個相等的階段,即第 1-10 天、第 11-20 天……第 91-100 天。
對於每家商店,找到每個階段的中位數並在列中報告它們。
對於具有 1 和 2 等完整 100 天數據的商店,將有 10 個中位數。 (m_p1, …m_p10)
而對於 rest,會更少,例如商店 1000 將只有 7 個中值。
所需的表(有 1000 行 - 每個商店 1 行)如下所示:
店鋪 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM