Следующая проблема вызывает у меня очень сильную головную боль.
У меня есть большой набор данных, который выглядит следующим образом.
Name Date C1 C2 C3 C4 C5 C6 C7
A 2008-01-03 100
A 2008-01-05 NA
A 2008-01-07 120
A 2008-02-03 NA
A 2008-03-10 50
A 2008-07-14 70
A 2008-07-15 NA
A 2009-01-03 40
A 2009-01-05 NA
A 2010-01-07 NA
A 2010-03-03 30
A 2010-03-10 20
A 2011-07-14 10
A 2011-07-15 NA
B 2008-01-03 NA
B 2008-01-05 5
B 2008-01-07 3
B 2008-02-03 11
B 2008-03-10 13
B 2008-07-14 ....
Как видите, в моих наблюдениях много АН.
Другие столбцы выглядят аналогично, и набор данных имеет +100.000 строк. Так что это огромный.
Я хочу объединить свои данные следующим образом.
Например, С1:
Я хочу построить среднемесячное значение для каждого Имени, а также для каждого года и каждого месяца в сроки от 2000-01 до 2012-12.
Среднемесячное значение должно рассчитываться с использованием доступных дат каждого месяца.
Когда вычисления будут выполнены, мой набор данных должен выглядеть следующим образом.
Name Date C1 C2 C3 C4 C5 C6 C7
A 2008-01 monthly average
A 2008-02 monthly average
A 2008-03 monthly average
A 2008-04 monthly average
A 2008-05 monthly average
A 2008-06 monthly average
A 2008-07 monthly average
A 2008-08 monthly average
A 2008-09 monthly average
A 2008-10 monthly average
A 2008-11 monthly average
A 2008-12 monthly average
A 2009-01 monthly average
B 2008-01 monthly average
B 2008-02 monthly average
B 2008-03 monthly average
B 2008-04 monthly average
B 2008-05 monthly average
B 2008-06 ....
Таким образом, мои выходные данные должны отображаться для каждого имени каждый месяц года.
И значения либо NA, если месяц имел только NA-значения, либо они являются среднемесячным значением этого определенного месяца.
Например:
Name Date C1
A 2008-01-03 100
A 2008-01-05 NA
A 2008-01-07 120
Здесь мы ожидаем:
Name Date C1
A 2008-01 (100+120)/2 = 110
Например:
Name Date C1
A 2008-01-03 NA
A 2008-01-05 NA
A 2008-01-07 NA
Здесь мы ожидаем:
Name Date C1
A 2008-01 NA
Например:
Name Date C1
A 2008-01-03 100
A 2008-01-05 50
A 2008-01-07 120
Здесь мы ожидаем:
Name Date C1
A 2008-01 (100+50+120)/3 = 90
Поскольку я относительно новичок в r и не знаю, как решить эту проблему, я надеюсь найти кого-нибудь, кто сможет решить эту проблему и показать мне, как что-то подобное можно решить.
Буду очень благодарен за вашу поддержку:)