2017-06-03 10 views
1
mydat = data.frame(Q1 = c(0, 1, 0, 1), Q2 = c(0, 1, 1, 1), 
        Q3 = c(1, 1, 1, 1), Gender = c("M", "M", "F", "F")) 
> mydat 
    Q1 Q2 Q3 Gender 
1 0 0 1  M 
2 1 1 1  M 
3 0 1 1  F 
4 1 1 1  F 

> table(mydat[,1:3], mydat$Gender) 

Error in sort.list(y) : 'x' must be atomic for 'sort.list' 
Have you called 'sort' on a list? 

私は3つのバイナリ質問と性別変数を持つ非常に単純なデータセットを持っています。私は3つの質問と性別の間に関連があるかどうかを調べることに興味があるので、データを3(質問)×2(性別)のカウント表に集計したいと思います。私は私の表は、このR:テーブルを使用してm x nデータを集計する方法

 Q1 Q2 Q3 
M  1  1  2 
F  1  2  2 

編集のようなものを見てみたい:私たちはsumを操作することにより、グループを行うことができ

mydat = data.frame(Q1 = c(0, 1, NA, 1), Q2 = c(0, 1, 1, 1), 
        Q3 = c(1, NA, 1, 1), Gender = c("M", "M", "F", "F")) 

> rowsum(mydat[1:3], mydat$Gender) 
    Q1 Q2 Q3 
F NA 2 2 
M 1 1 NA 

答えて

0

他の列

library(dplyr) 
mydat %>% 
    group_by(Gender) %>% 
    summarise_all(funs(sum(., na.rm = TRUE))) 
# A tibble: 2 x 4 
# Gender Q1 Q2 Q3 
# <fctr> <int> <int> <int> 
#1  F  1  2  2 
#2  M  1  1  2 

の要素またはを使用します。base R

rowsum(mydat[-4], mydat$Gender, na.rm = TRUE) 
# Q1 Q2 Q3 
#F 1 2 2 
#M 1 1 2 
+0

ありがとうございます。私のデータセットにいくつかの「NA」が含まれていて、それらが私の集計に影響を与えたくない場合、私は何をすべきですか? – Adrian

+0

@Adrianその場合、 'sum'には' na.rm = TRUE'を使います。%group_by(Gender)%>%summarise_all(funs(sum(。、na.rm = TRUE)))また 'rowsum'でも使用できます – akrun

+0

申し訳ありませんが、別の質問があります。 Q1とGenderの2x2テーブルがほしいとします。 'rowsum(mydat [1]、mydat $ Gender、na.rm = TRUE)'は私に2x1のテーブルしか与えません。 – Adrian

関連する問題