【发布时间】:2019-10-31 22:14:49
【问题描述】:
我的数据如下所示:
年份 类别 一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月 1 1990 A 4564.0 465465.0 12 468 4884.0 12788.00 4218.00 -58445.86 -90643.00 -122840.1 -155037.29 -187234.4286 2 1990 B 6487.0 421214.0 878 2112 421283.0 56456.00 54654.00 515.00 212.00 515.0 212.00 515.0000 3 1990 C 42862.0 512.0 484 48 515.0 212.00 515.00 137858.33 48.00 137858.3 48.00 465.0000 4 1990 D 15.0 -169222.7 90 456 137858.3 48.00 465.00 135673.83 778.00 135673.8 778.00 12.0000 5 1990 E 19164.0 -401699.2 -304 246 135673.8 778.00 12.00 133489.33 57.00 133489.3 57.00 478.0000 6 1991 A 21436.8 -634175.7 -698 36 133489.3 57.00 478.00 131304.83 3.00 131304.8 3.00 331.3333 7 1991 B 23709.6 -866652.2 -1092 -174 131304.8 3.00 -8210.60 129120.33 30425.33 129120.3 -11463.57 337.8333 11 1992 A 32800.8 -1796558.2 -2668 -1014 122566.8 -27597.89 -29087.86 292051.00 82253.33 331147.5 -12728.17 363.8333 12 1992 B 35073.6 -2029034.7 -3062 -1224 120382.3 -32976.00 -34307.17 321333.47 95210.33 367329.4 -14420.56 370.3333 13 1992 C 37346.4 -2261511.2 -3456 -1434 118197.8 -38354.11 -39526.49 350615.94 108167.33 403511.2 -16112.96 376.8333我想使用 tidyverse 来操作这个数据框,如下所示:
首先,每年的类别数量不相等。即使其他年份没有特定类别,也应显示所有其他类别。因为如您所见,90 后有 5 个类别,但 91 后只有 2 个类别。
在此,应并排查看月份的数据,而不是逐行查看。所以通过以下方式; 90 年 1 月、90 年 2 月、...、90 年 12 月、91 年 1 月、91 年 2 月、...、91 年 12 月、92 年 1 月、...、92 月(这些将显示为列名)。
我想在专栏中以这种方式看到它。应该删除年份,并且只有唯一的类别应该显示在最左列(在类别下)。之后,如果某个类别不特定于一年中的某个月份,这意味着该月没有数据,则该月的下方可能为“0”。
我想为此在 R 中使用 tidyverse,但如果你能帮助我,我无法将它写成代码。
这是数据的预期版本,但正如我所说,月份应该并排放置:
类别 Jan.90 Feb.90 Mar.90 Apr.90 May.90 June.90 July.90 Aug.90 Sep.90 Oct.90 Nov.90 Dec.90 Jan.91 Feb.91 Mar.91 1 4564 465465.0 12 468 4884.0 12788 4218 -58445.86 -90643 -122840.1 -155037.3 -187234.4 21436.8 -634175.7 -698 2 B 6487 421214.0 878 2112 421283.0 56456 54654 515.00 212 515.0 212.0 515.0 23709.6 -866652.2 -1092 3 C 42862 512.0 484 48 515.0 212 515 137858.33 48 137858.3 48.0 465.0 0.0 0.0 0 4 D 15 -169222.7 90 456 137858.3 48 465 135673.83 778 135673.8 778.0 12.0 0.0 0.0 0 5 E 19164 -401699.2 -304 246 135673.8 778 12 133489.33 57 133489.3 57.0 478.0 0.0 0.0 0 Apr.91 May.91 June.91 July.91 Aug.91 Sep.91 Oct.91 Nov.91 Dec.91 Jan.92 Feb.92 Mar.92 Apr.92 May.92 June.92 July.92 1 36 133489.3 57 478.0 131304.8 3.00 131304.8 3.00 331.3333 32800.8 -1796558 -2668 -1014 122566.8 -27597.89 -29087.86 2 -174 131304.8 3 -8210.6 129120.3 30425.33 129120.3 -11463.57 337.8333 35073.6 -2029035 -3062 -1224 120382.3 -32976.00 -34307.17 3 0 0.0 0 0.0 0.0 0.00 0.0 0.00 0.0000 37346.4 -2261511 -3456 -1434 118197.8 -38354.11 -39526.49 4 0 0.0 0 0.0 0.0 0.00 0.0 0.00 0.0000 0.0 0 0 0 0.0 0.00 0.00 5 0 0.0 0 0.0 0.0 0.00 0.0 0.00 0.0000 0.0 0 0 0 0.0 0.00 0.00 8 月 92 日 9 月 92 日 10 月 92 日 11 月 92 日 12 月 92 日 1 292051.0 82253.33 331147.5 -12728.17 363.8333 2 321333.5 95210.33 367329.4 -14420.56 370.3333 3 350615.9 108167.33 403511.2 -16112.96 376.8333 4 0.0 0.00 0.0 0.00 0.0000 5 0.0 0.00 0.0 0.00 0.0000【问题讨论】:
-
除非你不完全依赖
tidyverse,使用内置功能可能更经济一些,试试reshape(df, idvar="Categories", timevar="Year", direction="wide")