SML wrote on 11/07/2011 09:10:30 PM:>
> I'm trying to rekey values which denote there is no values, i.e.,
> '-999' in a dataset which contains both '-999' and NA
entries.
> When I try the following command I get the following error:
>
> > data.frame[data.frame$MAR <= -99999,"MAR"] <- NA
>
> "missing values are not allowed in subscripted assignments of data
> frames"
>
> Example of data:
> YEAR JAN FEB MAR ... DEC
> 1931 5 -999 NA 3
> 1932 2 1 -999 2
> .
> .
> .
> 2010 -999 NA 2 1
>
>
> I've tried to replace the NAs with -999 values first to remove the NA
> values, but got the same error.
>
> I'm quite new to R, and these little issues seem to be a stumbling
> block. Many thanks for any help you might be able to offer.
First of all, you should call your data frame something other than
data.frame because data.frame is already a function in the base package of
R. Let's call it df, instead,
df <- data.frame
rm(data.frame)
Secondly, it looks like the variables in your data frame (JAN, FEB, MAR,
..., DEC) are character not numeric, because their values are left aligned
in your example print out. You can test this out by showing the class of
each variable in the data frame,
lapply(df, class)
If the variables are character, you can convert them to numeric,
df2 <- as.data.frame(lapply(df, as.numeric))
Then you can convert all the -999 values to NAs,
df2[df2 < -99] <- NA
YEAR JAN FEB MAR ... DEC
1931 5 NA NA 3
1932 2 NA NA 2
.
.
.
2010 NA NA 2 1
Jean
[[alternative HTML version deleted]]