2016-05-06 8 views
1

Ein Beispiel Datenrahmen:Summarize/umformen Daten in R

df <- structure(list(id = 1:18, region = structure(c(1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("a", 
"b"), class = "factor"), age.cat = structure(c(1L, 1L, 2L, 2L, 
2L, 3L, 3L, 4L, 1L, 1L, 1L, 1L, 2L, 2L, 3L, 4L, 4L, 4L), .Label = c("0-18", 
"19-35", "36-50", "50+"), class = "factor")), .Names = c("id", 
"region", "age.cat"), class = "data.frame", row.names = c(NA, 
-18L)) 

Ich möchte die Daten neu zu gestalten, wie unten beschrieben:

region 0-18 19-35 36-50 50+ 
a  2 3  2  1 
b  4 2  1  3 

Muss ich einfach Aggregat oder die Daten neu zu gestalten? Jede Hilfe würde sehr geschätzt werden.

Antwort

2

reshape2 Verwendung:

install.packages('reshape2') 
library(reshape2) 

df1 <- melt(df, measure.vars = 'age.cat') 
df1 <- dcast(df1, region ~ value) 
6

Sie können es nur table mit:

table(df$region, df$age.cat) 

    0-18 19-35 36-50 50+ 
    a 2  3  2 1 
    b 4  2  1 3 
+0

einzige (kleine) Problem hier ist der Spaltenname für 'Region' verloren geht. –