2011-07-22 7 views
4

これは簡単な質問かもしれませんが、私は誰かが正しい方向に私を向けることを望んでいました。 Jは、私が横に割り当てられた1を持つK値の平均を取ることができるようにしたいK.で定義されている変数の型を指定し大きなデータセットの平均値に基づいて合格/不合格の値を割り当てます

dfrm <- list(L = c("A","B","P","C","D","E","P","F"), J=c(2,2,1,2,2,2,1,2), K=c(4,3,10,16,21,3,17,2)) 
dfrm <-as.data.frame(dfrm) 
dfrm 
    L J K 
1 A 2 4 
2 B 2 3 
3 P 1 10 
4 C 2 16 
5 D 2 21 
6 E 2 3 
7 P 1 17 
8 F 2 2 

コラム:私はのサンプルデータセットを持っています。この例では10であろうと17

T = c(10,17) 
mean(T) 
13.5 

次に私は列の数がKよりも大きいか否かを識別するためにパス= 1、= 0失敗ランクを、パス/フェイルを割り当てることができるようにします平均。

最終的なデータセットは、次のようになります。これはとても基本的なようだ

cdfrm <- list(L = c("A","B","P","C","D","E","P","F"), J=c(2,2,1,2,2,2,1,2), K=c(4,3,10,16,21,3,17,2),C = c(0,0,0,1,1,0,1,0)) 
cdfrm <-as.data.frame(cdfrm) 
cdfrm 
    L J K C 
1 A 2 4 0 
2 B 2 3 0 
3 P 1 10 0 
4 C 2 16 1 
5 D 2 21 1 
6 E 2 3 0 
7 P 1 17 1 
8 F 2 2 0 

、私は申し訳ありません男だ、私はちょうど私がoverthinking午前のか分かりません。

+1

+1である。達成しようとしていることの多くは、R入門(http://cran.r-project.org/doc/manuals/R-intro.html)のさまざまなセクションで説明されています。 –

答えて

2

解決策には2つのステップがあります。最初は、興味のある値の平均を計算することです。言い換えれば、data.frameの値のサブセットの平均を取ることです。 Rにはsubsetというサブセットを計算する便利な関数があります。ここでは、それはアクションである:

meanK <- mean(subset(dfrm, subset=J==1, select=K)) 
meanK 
K 
13.5 

次に、あなたは我々だけで計算した平均値を使用して、データフレームの列Kを比較したいです。これは、単純なベクトルの比較である:

dfrm$Pass <- dfrm$K>meanK 
dfrm 
L J K Pass 
1 A 2 4 FALSE 
2 B 2 3 FALSE 
3 P 1 10 FALSE 
4 C 2 16 TRUE 
5 D 2 21 TRUE 
6 E 2 3 FALSE 
7 P 1 17 TRUE 
8 F 2 2 FALSE 
+1

すべての目的と目的のためにTRUEは1に対応し、FALSEは0になります。 –

+0

Yepp、 'as.numeric(c(TRUE、FALSE、FALSE、TRUE))で証明できます。 –

0

はここJsapply(..., mean)グループ賢明な手段を求めるの値に応じて1行に

transform(dfrm, C = K > sapply(split(dfrm$K, dfrm$J), mean)[J]) 

splitグループKの値をそれを行う方法です。例を提供し、所望の結果を明確に述べるために、

関連する問題