[R] [FORGED] NA value in list of data frame

ani jaya g@@@uu| @end|ng |rom gm@||@com
Fri Oct 18 09:22:17 CEST 2019


Thank you very much everyone. All fine now!!

On Fri, Oct 18, 2019 at 11:42 AM Rolf Turner <r.turner using auckland.ac.nz>
wrote:

>
> On 18/10/19 2:43 PM, ani jaya wrote:
>
> >   Dear R-Help,
> >
> > I have a list of data frame that I import from excel file using read.xlsx
> > command.
> >
> > sheets <- openxlsx::getSheetNames("rainfall.xlsx")
> > test <- lapply(sheets,function(i) read.xlsx("rainfall.xlsx", sheet=i,
> > startRow=8, cols=1:2))
> > names(test) <- sprintf("%i", 1986:2015)
> >
> > And I got a data.frame with 365 rows and two columns contains date and
> > rainfall data.
> > There is a value in rainfall data that i want to change as NA (8888). So
> my
> > question is how to change those value in all the data frame?
> >
> > test[1]$`1986`
> >         Date   RR
> > 1   01-01-1986    0
> > 2   02-01-1986    7
> > 3   03-01-1986   72
> > 4   04-01-1986    4
> > 5   05-01-1986   19
> > 6   06-01-1986    4
> > 7   07-01-1986   16
> > 8   08-01-1986   21
> > 9   09-01-1986   34
> > 10  10-01-1986   72
> > 11  11-01-1986   93
> > 12  12-01-1986  178
> > 13  13-01-1986   86
> > 14  14-01-1986   11
> > 15  15-01-1986    0
> > 16  16-01-1986   31
> > 17  17-01-1986   22
> > 18  18-01-1986   18
> > 19  19-01-1986    3
> > 20  20-01-1986    0
> > 21  21-01-1986   31
> > 22  22-01-1986   46
> > 23  23-01-1986    4
> > 24  24-01-1986   40
> > 25  25-01-1986   63
> > 26  26-01-1986  125
> > 27  27-01-1986   33
> > 28  28-01-1986   44
> > 29  29-01-1986    6
> > 30  30-01-1986    0
> > 31  31-01-1986    0
> > 32  01-02-1986    2
> > 33  02-02-1986   71
> > 34  03-02-1986 8888
> > 35  04-02-1986    0
> > 36  05-02-1986    0
> > 37  06-02-1986   56
> > 38  07-02-1986   19
> > 39  08-02-1986    3
> > 40  09-02-1986    7
> > 41  10-02-1986   24
> > 42  11-02-1986   55
> > 43  12-02-1986    0
> > 44  13-02-1986    0
> > .
> > .
> > .
> >
> > Should I extract the data frame from the list one by one?
>
> Try (something like):
>
> revisedTest <- lapply(test,function(x){x$RR[x$RR==8888] <- NA; x})
>
> Or, using Bert Gunter's slick is.na() trick:
>
> revisedTest <- lapply(test,function(x){is.na(x$RR) <- x$RR==8888; x})
>
> (Note:  not tested.)
>
> cheers,
>
> Rolf Turner
>
> --
> Honorary Research Fellow
> Department of Statistics
> University of Auckland
> Phone: +64-9-373-7599 ext. 88276
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list