Как выбрать строку с вложенными строками? - PullRequest
3 голосов
/ 05 мая 2020

Сейчас я работаю с R и использую набор данных h02 . Этот набор данных можно импортировать с помощью

library(fpp)
data <- h02
data

Когда я запустил код, я получил следующий результат.

           Jan       Feb       Mar       Apr       May       Jun       Jul       Aug       Sep       Oct       Nov       Dec
1991                                                             0.4297950 0.4009060 0.4321590 0.4925430 0.5023690 0.6026520
1992 0.6601190 0.3362200 0.3513480 0.3798080 0.3618010 0.4105340 0.4833887 0.4754634 0.5347610 0.5686061 0.5952233 0.7712578
1993 0.7515028 0.3875543 0.4272832 0.4138902 0.4288588 0.4701264 0.5092097 0.5584430 0.6015141 0.6329471 0.6996054 0.9630805
1994 0.8193253 0.4376698 0.5061213 0.4704912 0.5106963 0.5405138 0.5581189 0.6728521 0.6858974 0.6896920 0.7413036 0.8133076
1995 0.8031126 0.4752582 0.5525723 0.5271078 0.5612498 0.5889776 0.6231336 0.7408372 0.7253718 0.8158030 0.8140095 0.9266531
1996 0.9372759 0.5287616 0.5593399 0.5778717 0.6149274 0.5941888 0.7077584 0.7195020 0.7443237 0.8048551 0.7885423 0.9710894

Это был образец полного набора данных. Моя проблема в том, что когда я пытался просмотреть первую строку набора данных, я использовал эту команду

head(data, 1)

Это должна быть первая строка набора данных, но у меня есть это output

          Jul
1991 0.429795

Но мой ожидаемый результат будет

           Jan       Feb       Mar       Apr       May       Jun       Jul       Aug       Sep       Oct       Nov       Dec
1991                                                             0.4297950 0.4009060 0.4321590 0.4925430 0.5023690 0.6026520

Когда я проверяю столбцы, этот набор данных не имеет столбцов и имеет только строки. в каждой строке года есть строки подмесяца. Как выбрать строку года со всеми строками месяца?

Ответы [ 2 ]

2 голосов
/ 05 мая 2020

Это потому, что data - это не datafame, а объект временного ряда. Вы можете проверить это

str(data)
Time-Series [1:204] from 1992 to 2008: 0.43 0.401 0.432 0.493 0.502 ...

Сначала преобразуйте data в фрейм данных, тогда ваша команда head будет работать так, как вы ожидаете.

Month <-  factor(cycle(data), levels = 1:12, labels = month.abb)
df <- tapply(data, list(year = floor(time(data)), month = Month), c)
head(df, 1)

      month
year   Jan Feb Mar Apr May Jun      Jul      Aug      Sep      Oct      Nov      Dec
  1991  NA  NA  NA  NA  NA  NA 0.429795 0.400906 0.432159 0.492543 0.502369 0.602652
1 голос
/ 06 мая 2020

Я нашел другое решение для этого. Это ключевое слово window(), и вы должны указать год начала, месяц и год окончания, месяц, чтобы получить конкретную c строку.

window(data, start=c(1991,1), end=c(1991,12))

Вывод -:

          Jul      Aug      Sep      Oct      Nov      Dec
1991 0.429795 0.400906 0.432159 0.492543 0.502369 0.602652

Временные ряды с января по июнь содержат 0 значений для тех месяцев, которые не учитываются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...