2015-01-15 5 views
11

데이터 구조에 열 합계를 추가 것은

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

을 행 합계 추가 옵션을 제공하는 다른 테이블 함수가 있습니까?

+0

@BlakeS를 사용할 수 있습니다. 'data.table'을 제목으로 사용하는 옵션은'dcast.data.table (setDT (df) [, n : = GRP, 회사], Company ~ 결혼, 길이, value.var = 'n') [ 합계 : = Reduce ('+', .SD), .SDcols = 2 : 4] []' – akrun

답변

16

당신은 나중에 cbindrowSums을 사용할 수

tab <- table(df$Company,df$Marital) 
tab <- cbind(tab, Total = rowSums(tab)) 
또한 사용할 수 있습니다

addmargins 기능 내장 :

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

합니다 (2는 합계 열을 추가하는 것을 의미 아니지만 총 행 - 당신은 그것을 생략 할 수 있으며 둘 다 얻을 것이다).

+0

고마워. 이 작업을 자동으로 수행하는 기존 테이블 함수가 있습니까? 가능한 경우 두 번째 단계를 피하는 것이 좋습니다. –

+0

@BlakeS. edit :'addmargins'를 사용할 수 있습니다. –

11

당신은 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