Вот как выглядит пример:
Year Categories January February March April May June July August September October November December
1990 A 4564.0 465465.0 12 468 4884.0 12788.00 4218.00 -58445.86 -90643.00 -122840.1 -155037.29 -187234.4286
1990 B 6487.0 421214.0 878 2112 421283.0 56456.00 54654.00 515.00 212.00 515.0 212.00 515.0000
1990 C 42862.0 512.0 484 48 515.0 212.00 515.00 137858.33 48.00 137858.3 48.00 465.0000
1990 D 15.0 -169222.7 90 456 137858.3 48.00 465.00 135673.83 778.00 135673.8 778.00 12.0000
1990 E 19164.0 -401699.2 -304 246 135673.8 778.00 12.00 133489.33 57.00 133489.3 57.00 478.0000
1991 A 21436.8 -634175.7 -698 36 133489.3 57.00 478.00 131304.83 3.00 131304.8 3.00 331.3333
1991 B 23709.6 -866652.2 -1092 -174 131304.8 3.00 -8210.60 129120.33 30425.33 129120.3 -11463.57 337.8333
1992 A 32800.8 -1796558.2 -2668 -1014 122566.8 -27597.89 -29087.86 292051.00 82253.33 331147.5 -12728.17 363.8333
1992 B 35073.6 -2029034.7 -3062 -1224 120382.3 -32976.00 -34307.17 321333.47 95210.33 367329.4 -14420.56 370.3333
1992 C 37346.4 -2261511.2 -3456 -1434 118197.8 -38354.11 -39526.49 350615.94 108167.33 403511.2 -16112.96 376.8333
Привет, ребята, прежде всего, извините за формат данных примера.Я новичок в stackoverflow и R. У меня проблема с манипулированием данными в R. Я хочу использовать вложенные циклы for для манипулирования этими данными.
То, что я хочу, это именно так:
Я хочу, чтобы категории «A», «B», «C», «D», «E» фиксировались в столбце «Категория» и помещали рядом данные за месяцы.Как январь 1990 г., февраль 1990 г., ...., декабрь 1990 г., январь 1991 г., февраль 1991 г., ..., декабрь 1991 г. Эти месяцы будут соседствовать друг с другом и будут представлены в виде столбцов.Поскольку в некоторые годы нет данных для определенных категорий, следует указать значение «0» в месяцах, соответствующих этим категориям.Как мне написать для этого вложенный цикл for?
Заранее благодарю за помощь.
На самом деле я пытался написать цикл, подобный этому, но не могу написать оператор if-elseв этой петле.Этот код был для моих реальных больших данных, но я создал пример данных для загрузки туда.
require(xlsx)
data = read.xlsx("sample-data.xlsx", sheetName = "Sheet1")
library("tidyverse")
cat_data <- as.data.frame(data$Category)
unique_cat <- as.data.frame(unique(cat_data))
names(unique_cat)[names(unique_cat) == "data$Category"] <- "Category"
month_data <- subset(data, select = -c(1:4))
year_data <- subset(data, select = -c(2:16))
data %>%
for (i in 1:length(data)){
for (j in 1:length(cat_data)){
for (k in 1:length(month_data)){
print(c(data)[i,j,k])
}
}
}
Это ожидаемый результат (так как я:
Categories Jan.90 Feb.90 Mar.90 Apr.90 May.90 June.90 July.90
1 A 4564 465465.0 12 468 4884.0 12788 4218
2 B 6487 421214.0 878 2112 421283.0 56456 54654
3 C 42862 512.0 484 48 515.0 212 515
4 D 15 -169222.7 90 456 137858.3 48 465
5 E 19164 -401699.2 -304 246 135673.8 778 12
Aug.90 Sep.90 Oct.90 Nov.90 Dec.90 Jan.91 Feb.91
1 -58445.86 -90643 -122840.1 -155037.3 -187234.4 21436.8 -634175.7
2 515.00 212 515.0 212.0 515.0 23709.6 -866652.2
3 137858.33 48 137858.3 48.0 465.0 0.0 0.0
4 135673.83 778 135673.8 778.0 12.0 0.0 0.0
5 133489.33 57 133489.3 57.0 478.0 0.0 0.0
Mar.91 Apr.91 May.91 June.91 July.91 Aug.91 Sep.91 Oct.91
1 -698 36 133489.3 57 478.0 131304.8 3.00 131304.8
2 -1092 -174 131304.8 3 -8210.6 129120.3 30425.33 129120.3
3 0 0 0.0 0 0.0 0.0 0.00 0.0
4 0 0 0.0 0 0.0 0.0 0.00 0.0
5 0 0 0.0 0 0.0 0.0 0.00 0.0
Nov.91 Dec.91 Jan.92 Feb.92 Mar.92 Apr.92 May.92
1 3.00 331.3333 32800.8 -1796558 -2668 -1014 122566.8
2 -11463.57 337.8333 35073.6 -2029035 -3062 -1224 120382.3
3 0.00 0.0000 37346.4 -2261511 -3456 -1434 118197.8
4 0.00 0.0000 0.0 0 0 0 0.0
5 0.00 0.0000 0.0 0 0 0 0.0
June.92 July.92 Aug.92 Sep.92 Oct.92 Nov.92 Dec.92
1 -27597.89 -29087.86 292051.0 82253.33 331147.5 -12728.17 363.8333
2 -32976.00 -34307.17 321333.5 95210.33 367329.4 -14420.56 370.3333
3 -38354.11 -39526.49 350615.9 108167.33 403511.2 -16112.96 376.8333
4 0.00 0.00 0.0 0.00 0.0 0.00 0.0000
5 0.00 0.00 0.0 0.00 0.0 0.00 0.0000