[R] Melt (reshape) question

jim holtman jholtman at gmail.com
Wed Jul 16 00:03:30 CEST 2008


Probably as the result of read.table without any headers, the column
names are "V1"..."V720".  You need to add new column names.  You have
statements:

colnames <- columnnames
rownames <- rnames

Are you assuming that these are assigning row/column names to the
structure?  Try

colnames(PopDen) <- columnnames

On Tue, Jul 15, 2008 at 5:00 PM, Steve Murray <smurray444 at hotmail.com> wrote:
>
> Dear all,
>
> I
> have a grid of 720 columns by 360 rows of global population density
> values, and hope to convert this to column format using the 'melt' command in the 'reshape' package. I'm not receiving
> any errors as such,  but when the code has finished running, my output
> looks like this:
>
>> head(PopDens.long)
>  Latitude Longitude PopDensity
> 1   -84.75        V1          0
> 2   -84.25        V1          0
> 3   -83.75        V1          0
> 4   -83.25        V1          0
> 5   -82.75        V1          0
> 6   -82.25        V1          0
>
>> tail(PopDens.long)
>       Latitude Longitude PopDensity
> 232658    87.25      V720        -99
> 232659    87.75      V720        -99
> 232660    88.25      V720        -99
> 232661    88.75      V720        -99
> 232662    89.25      V720        -99
> 232663    89.75      V720        -99
>
> As
> you can see, I'm getting strange 'V' values in the 'Longitude' column,
> which don't correspond to my real Longitude values. I've had a good
> look through the script and tried tweaking a few things, but with no
> luck. I've pasted the code below, so that you can see what I've done,
> and maybe you someone spot a fundamental error of mine, or something that
> I'm missing.
>
>
> columnnames <- sprintf("%.2f", seq(from = -179.75, to = 179.75, length = 720))
> rnames <- sprintf("%.2f", seq(from = 89.75, to = -89.75, length = 360))
>
> read.table("gpw_pop_density_hd_1995a.asc", colClasses = "numeric", na = "-99") -> PopDens
>
> colnames <- columnnames
> rownames <- rnames
>
> library(reshape)
>
> PopDens$Latitude <- rownames
>
> PopDens.long <- melt(PopDens, id.var = "Latitude", na.rm = TRUE)
> names(PopDens.long) <- c("Latitude", "Longitude", "PopDensity")
>
> head(PopDens.long)
>
>
> Am
> I right in thinking that this *should* also remove the -99s (NA
> values)? Because at present, the lower end ot the file looks like this:
>
>> tail(PopDens.long)
>       Latitude Longitude PopDensity
> 232658   -87.25      V720        -99
> 232659   -87.75      V720        -99
> 232660   -88.25      V720        -99
> 232661   -88.75      V720        -99
> 232662   -89.25      V720        -99
> 232663   -89.75      V720        -99
>
> Again,
> I've almost certainly made an error somewhere! In any case, is there
> also a way of telling the code to also ignore -88 values as well as the -99s?
>
> Many thanks for your help.
>
> Best wishes,
>
> Steve
>
> _________________________________________________________________
> The John Lewis Clearance - save up to 50% with FREE delivery
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve?



More information about the R-help mailing list