当我的时间变量是“FY2017Q1”,2017财年第二季度等时,如何整理我的数据集?

问题描述 投票:0回答:1

我下面的数据集是宽格式的,我想将其转换为长格式。我希望列为“年”和“季度”而不是下面的列。我的第一个想法是使用spread()然后收集()但我不知道如何使用我的数据设置方式来做这件事。通常,使用数据透视表在Excel中分析此数据,并以此方式设置以限制使用的行数。

# A tibble: 957,545 x 3
   FY2017Q1 FY2017Q2 FY2017Q3
      <int>    <int>    <int>
 1      149       NA       NA
 2       22       NA       NA
 3       NA       NA      268
 4       NA       NA       NA
 5        1       NA       NA
 6       49       NA       NA
 7       NA       NA       NA
 8       NA       NA       NA
 9       NA      225      300
10       NA      196      167
# ... with 957,535 more rows
r tidyr
1个回答
0
投票

假设您的变量名称都格式化为“FY #### Q#”,则以下内容应该完成:

library(dplyr)
library(tidyr)

df %>%
  gather(key, value) %>%
  mutate(Year = substring(key, 3, 6),
         Quarter = substring(key, 7, 8)) %>%
  select(Year, Quarter, value) %>%
  na.omit() # skip this step if you want to keep the NAs

   Year Quarter value
1  2017      Q1   149
2  2017      Q1    22
5  2017      Q1     1
6  2017      Q1    49
19 2017      Q2   225
20 2017      Q2   196
23 2017      Q3   268
29 2017      Q3   300
30 2017      Q3   167

样本数据:

df <- read.table(text = "   FY2017Q1 FY2017Q2 FY2017Q3
                      1      149       NA       NA
                      2       22       NA       NA
                      3       NA       NA      268
                      4       NA       NA       NA
                      5        1       NA       NA
                      6       49       NA       NA
                      7       NA       NA       NA
                      8       NA       NA       NA
                      9       NA      225      300
                      10       NA      196      167")
> df
   FY2017Q1 FY2017Q2 FY2017Q3
1       149       NA       NA
2        22       NA       NA
3        NA       NA      268
4        NA       NA       NA
5         1       NA       NA
6        49       NA       NA
7        NA       NA       NA
8        NA       NA       NA
9        NA      225      300
10       NA      196      167
© www.soinside.com 2019 - 2024. All rights reserved.