[R] Data frame manipulation
jim holtman
jholtman at gmail.com
Fri Nov 23 04:02:25 CET 2012
The 'reshape2' package is your friend:
> require(reshape2)
> x <- melt(wrong, id = c("Local", "Mês", "Dia", "Colonia"), variable.name = "Hora")
> # remove "X" from Hora
> x$Hora <- as.character(substring(x$Hora, 2))
> head(x) # not in the right order
Local Mês Dia Colonia Hora value
1 Conceição Junho 1 3 6h 2.16137
2 Conceição Junho 2 3 6h 2.46538
3 Conceição Junho 3 3 6h 2.53275
4 Conceição Junho 1 4 6h 1.65321
5 Conceição Junho 2 4 6h 2.30320
6 Conceição Junho 3 4 6h 2.71012
> # sort, but first add blank on Hora for less that 10h for sorting
> x$Hora <- ifelse(nchar(x$Hora) == 2, paste0(" ", x$Hora), x$Hora)
> x <- x[order(x$Local, x$Mês, x$Dia, x$Colonia, x$Hora), ]
>
> head(x,20)
Local Mês Dia Colonia Hora value
10 Conceição julho 1 3 6h 2.20952
20 Conceição julho 1 3 7h 2.01284
30 Conceição julho 1 3 8h 1.79239
40 Conceição julho 1 3 9h 1.59106
50 Conceição julho 1 3 10h 1.62325
60 Conceição julho 1 3 11h 1.51851
70 Conceição julho 1 3 12h 1.41497
80 Conceição julho 1 3 13h 1.38021
90 Conceição julho 1 3 14h 1.66276
100 Conceição julho 1 3 15h 1.46240
110 Conceição julho 1 3 16h 1.53148
120 Conceição julho 1 3 17h 1.66276
1 Conceição Junho 1 3 6h 2.16137
11 Conceição Junho 1 3 7h 2.20412
21 Conceição Junho 1 3 8h 2.08991
31 Conceição Junho 1 3 9h 1.72428
41 Conceição Junho 1 3 10h 1.69897
51 Conceição Junho 1 3 11h 1.62325
61 Conceição Junho 1 3 12h 1.44716
71 Conceição Junho 1 3 13h 1.51851
On Thu, Nov 22, 2012 at 8:53 PM, Raoni Rodrigues
<caciquesamurai at gmail.com> wrote:
> structure(list(Local = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
> 1L, 1L, 1L), .Label = "Conceição", class = "factor"), Mês = structure(c(2L,
> 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("julho", "Junho"
> ), class = "factor"), Dia = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
> 1L, 1L), Colonia = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L),
> Hora = structure(1:10, .Label = c("6h", "7h", "8h", "9h",
> "10h", "11h", "12h", "13h", "14h", "15h", "16h", "17h"), class =
> "factor"),
> N = c(2.16137, 2.20412, 2.08991, 1.72428, 1.69897, 1.62325,
> 1.44716, 1.51851, 1.43136, 1.47712)), .Names = c("Local",
> "Mês", "Dia", "Colonia", "Hora", "N"), row.names = c(NA, 10L), class =
> "data.frame")
--
Jim Holtman
Data Munger Guru
What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.
More information about the R-help
mailing list