[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