tablo

2015-01-15 22 views
11

Veri yapısına sütun toplamı Addtablo

  a  b c Total 
married  50 20 5 75 
single  10 10 10 30 
widow  5  50 0 55 

Bir satır toplamı ekleme seçeneği sağlayan farklı bir tablo işlevi var mı?

+0

@BlakeS kullanabilirsiniz. Dcast.data.table (setDT (df) [, n: =. GRP, Şirket], Şirket ~ Medeni, uzunluk, value.var = 'n') başlıklı olarak 'data.table' kullanarak bir seçenek [, Toplam: = Azalt ('+', .SD), .SDcols = 2: 4] [] ' – akrun

cevap

16

sonradan cbind ve rowSums kullanabilirsiniz:

tab <- table(df$Company,df$Marital) 
tab <- cbind(tab, Total = rowSums(tab)) 
da kullanabilirsiniz

addmargins fonksiyonu dahili:

tab <- addmargins(table(df$Company,df$Marital), 2) 

(2 bir miktar sütunu eklemek için anlamı, ancak bir toplam satır-bunu atlayabilir ve her ikisini de alacaksınız).

+0

Teşekkürler. Bunu otomatik olarak yapan mevcut herhangi bir tablo işlevi var mı? Mümkünse ikinci adımdan kaçınmayı tercih ederim. –

+0

@BlakeS. Düzenleme bakınız: 'addmargins' kullanabilirsiniz –

11

Sen addmargins

x <- table(df$Company,df$Marital) 
addmargins(x)   # option 1 
ftable(addmargins(x)) # option 2 
1


library(dplyr) 

df <- tribble(
     ~status,  ~a, ~b, ~c, 
     "married",  50, 20, 5, 
     "single",  10, 10, 10, 
     "widow",  5,  50, 0 
     ) 

df %>% 
    mutate(Total_Row = rowSums(.[2:4])) 
#> # A tibble: 3 x 5 
#> status  a  b  c Total_Row 
#> <chr> <dbl> <dbl> <dbl>  <dbl> 
#> 1 married 50.0 20.0 5.00  75.0 
#> 2 single 10.0 10.0 10.0  30.0 
#> 3 widow 5.00 50.0 0   55.0 

df %>% 
    mutate(Total_Row = select(., 2:4) %>% rowSums()) 
#> # A tibble: 3 x 5 
#> status  a  b  c Total_Row 
#> <chr> <dbl> <dbl> <dbl>  <dbl> 
#> 1 married 50.0 20.0 5.00  75.0 
#> 2 single 10.0 10.0 10.0  30.0 
#> 3 widow 5.00 50.0 0   55.0