2015-05-24 59 views
1

我有以下:多透視表 - R(表)

Type State 
A  California 
B  Washington 
A  California 
A  California 
A  Washington 
B  New York 

我想這樣做的樞軸中的R,找出在每個狀態每種類型的數目。

我已經找到了如何找出每種類型的數量(不包括國家崩潰)使用:

table(df$Type) 

這給了我以下結果:

Var1 Freq 
A 4 
B 2 

不過,我想喜歡添加第二個維度,以便我可以得到上述結果的狀態分解。建議的輸出如下所示:

California Washington New York Total 
A  3   1   0  4 
B  0   1   1  2 

有沒有人知道如何做這樣的事情?

回答

0

使用dplyr

library(dplyr) 

    df %>% 
     group_by(Type, State) %>% 
     tally() 
+0

這與OP要求的內容很接近。如果添加'%>%spread(狀態,n,填充= 0)',您將獲得除「總計」列以外的所有內容。 – r2evans

2

您可以使用reshape2您的數據重塑成正確的格式:

library(reshape2) 
df1 <- dcast(df, Type ~ State) 

爲了得到它與行總和的格式爲你的問題,你只是簡單地列需要做一些操作:

# add rownames 
rownames(df1) <- df1$Type 
df1$Type <- NULL 

# calculate rowSums 
df1$Total <- rowSums(df1) 

而這個wi將有預期的輸出:

California New York Washington Total 
A   3  0   1  4 
B   0  1   1  2 
+0

謝謝@chappers!工作得很好:) – user4918087

0

table可以處理多個變量。

table(mydf) 
#  State 
# Type California New York Washington 
# A   3  0   1 
# B   0  1   1 

使用addmargins得到總數。

## Row totals 
addmargins(table(mydf), margin = 2) 
#  State 
# Type California New York Washington Sum 
# A   3  0   1 4 
# B   0  1   1 2 

## Row and column totals 
addmargins(table(mydf)) 
#  State 
# Type California New York Washington Sum 
# A   3  0   1 4 
# B   0  1   1 2 
# Sum   3  1   2 6