2017-07-24 2 views
0

r Ich habe die folgende DatasetSchwenk Daten mit rownames sein COLNAMES

structure(list(Year = c("Oranges", "Cherrys", "Apples", "Bananas" 
), `42461` = c(0, NA, 12, NA), `42491` = c(1, 12, NA, NA), `42522` = c(1, 
12, 7, NA), `42552` = c(NA, 12, 6, NA), `42583` = c(2, NA, 8, 
NA), `42614` = c(NA, 12, 5, NA), `42644` = c(NA, NA, 4, NA), 
    `42675` = c(NA, 12, NA, NA), `42705` = c(NA, 3, NA, NA), 
    `42736` = c(NA, NA, 12, NA), `42767` = c(NA, NA, 12, NA), 
    `42795` = c(NA, 12, NA, NA), Total = c(0, 0, 0, 0)), .Names = c("Year", 
"42461", "42491", "42522", "42552", "42583", "42614", "42644", 
"42675", "42705", "42736", "42767", "42795", "Total"), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -4L)) 

Ich mag es wäre zu verschwenken aussehen: Kategorie-Werte-Jahr

Ich habe versucht, die folgenden:

datdat %>% gather(Cat,Var) 

aber das Problem ist, dass das Jahr der Name jeder Spalte ist.

+1

'df%>% sammeln (Cat , Var, -Jahr) '? – Psidom

Antwort

1

ich die "Summen" Säule entfernt, ich bin nicht sicher, ob dies ist, was Sie fragen nach:

library (data.table) 
dat = data.table (structure(list(Year = c("Oranges", "Cherrys", "Apples", 
"Bananas" 
), `42461` = c(0, NA, 12, NA), `42491` = c(1, 12, NA, NA), `42522` = c(1, 
12, 7, NA), `42552` = c(NA, 12, 6, NA), `42583` = c(2, NA, 8, 
NA), `42614` = c(NA, 12, 5, NA), `42644` = c(NA, NA, 4, NA), 
`42675` = c(NA, 12, NA, NA), `42705` = c(NA, 3, NA, NA), 
`42736` = c(NA, NA, 12, NA), `42767` = c(NA, NA, 12, NA), 
`42795` = c(NA, 12, NA, NA), Total = c(0, 0, 0, 0)), .Names = c("Year", 
"42461", "42491", "42522", "42552", "42583", "42614", "42644", 
"42675", "42705", "42736", "42767", "42795", "Total"), class = c("tbl_df", 
"tbl", "data.frame"), row.names = c(NA, -4L))) 

names (dat)[1] = "Category" 
dat [, "Total" := NULL] 
melt.dat = melt (dat, id.vars = c("Category"), variable.name = "Year") 

melt.dat gibt Ihnen:

> head (melt.dat) 
    Category Year value 
1: Oranges 42461  0 
2: Cherrys 42461 NA 
3: Apples 42461 12 
4: Bananas 42461 NA 
5: Oranges 42491  1 
6: Cherrys 42491 12 

Beachten Sie auch, Die Tabelle ist eine data.table, keine data.frame :) Vergessen zu erwähnen, install.packages ("data.table") ausführen, wenn Sie es noch nicht haben

Verwandte Themen