2017-02-14 9 views
0

私はRでプログラミングするのが初めてです。各S.ID別々に(すなわち、AおよびB)、分割表のために、私が作成したいR:ループを使用してカウントされたカウントテーブルまたはコンティンジェンシーテーブル

d=matrix(c(1,2,3,4,5,6,7,"A","A","A","B","B","B","B",0,0,99,0,0,99,0,99,0,99,99,0,0,99), ncol=4) 
colnames(d) = c("ID","S.ID","ValA","ValB"); dt=as.table(d) 

: 私は(私はRの前半再形成)4列の「長い」データセットを持っていますたとえば、ヴァラとValBのカウント

(ここでは)のために -

enter image description here

私の実際の例では、私は17 S.IDsを持っていると私は、不測の事態が発生するプログラムを書きたいのですがそれぞれのテーブル。

さらに、これはR Studioで簡単にできますか?もしそうなら、どのように詳細を教えてください。

ありがとうございました!

- すべての人にあまりにもプロンプティに感謝しています! :)あなたがこの試すことができ

+0

可能な複製http://stackoverflow.com/questions/13841599/calculate-frequency-o f-array-using-rを使用したアレイでの発生 – akrun

答えて

0

:data.frameにtapplyまたはbyニーズの変換を使用して

d <- as.data.frame(d) 
l <- lapply(unique(d$S.ID), function(x) xtabs(~ValB+ValA, subset(d, S.ID==x))) 
names(l) <- unique(d$S.ID) 
l 
#$A 
# ValA 
#ValB 0 99 
# 0 1 0 
# 99 1 1 

#$B 
# ValA 
#ValB 0 99 
# 0 1 1 
# 99 2 0 
1

d<-data.frame(d) 
by(d, d$S.ID, function(grouped.d) table(grouped.d$ValA, grouped.d$ValB)) 
3

を使用すると、複数の変数にtableを使用することができます。

with(as.data.frame(d), table(ValA, ValB, S.ID)) 

# , , S.ID = A 
# ValB 
#ValA 0 99 
# 0 1 1 
# 99 0 1 

#, , S.ID = B 
# ValB 
#ValA 0 99 
# 0 1 2 
# 99 1 0 
関連する問題