Добавление пропущенных значений после применения агрегата в R - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь рассчитать среднемесячное значение из дневных значений.В моих данных слишком много пропущенных значений, и я хочу заполнить их значениями NA.Например, это желаемый результат:

"MM","YY","RR"
10,1961,NA
10,1962,NA
10,1963,NA
10,1964,NA
10,1965,NA
10,1966,NA      
10,1967,NA
10,1968,NA
10,1969,NA
10,1970,NA  
10,1971,14.8290322580645
10,1972,5.92903225806452
10,1973,7.10645161290323
10,1974,9.25806451612903
10,1975,6.13225806451613
10,1976,NA
10,1977,NA
10,1978,NA
10,1979,11.358064516129
10,1980,NA
10,1981,20.8354838709677
10,1982,NA
10,1983,NA 
10,1984,7.4741935483871
10,1985,NA
10,1986,NA
10,1987,NA
10,1988,NA
10,1989,NA
10,1990,NA
10,1991,NA
10,1992,NA
10,1993,NA
10,1994,NA
10,1995,NA
10,1996,NA
10,1997,NA
10,1998,NA
10,1999,NA
10,2000,NA
10,2001,12.2548387096774
10,2002,7.19354838709677
10,2003,4.34193548387097
10,2004,8.09354838709677
10,2005,10.3354838709677
10,2006,5.49677419354839
10,2007,9.58709677419355
10,2008,NA
10,2009,NA
10,2010,17.4548387096774

Тестовые данные можно скачать по этой ссылке: Ссылка на данные

Я использую статистическую функцию для расчетасреднее значение

Ниже приведен мой сценарий:

library(plyr)
dat<- read.csv("test.csv",header=TRUE,sep=",")
dat[dat == -999]<- NA
dat[dat == -888]<- 0

monthly_mean<-aggregate(RR ~ MM + YY,dat,mean)

#Filter August Only
oct<-monthly_mean[which(monthly_mean$MM == 10),]
dat2 <- as.data.frame(oct)

#monthly_mean <- ddply(dat,.(MM, DD), sumaprise, mean_r = 
mean(RR,na.rm=TRUE))

write.table(dat2,file="test_oct.csv",sep=",",col.names=T,row.names=F, na="NA")

Проблемы:

[1] При запуске этого сценария пропущенные годы также удаляются.

Буду признателен за любые предложения о том, как сделать это правильно в R.

1 Ответ

0 голосов
/ 25 мая 2018

Вы можете сохранить столбцы NA, изменив агрегатную функцию на

monthly_mean<-aggregate(RR ~ MM + YY,dat,mean,na.action=na.pass)
...