4

これは簡単な質問かもしれませんが、誰かが私を正しい方向に向けてくれることを望んでいました. 次のサンプル データセットがあります。

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

列 J は、K で定義されている変数のタイプを指定します。隣に 1 が割り当てられている K 値の平均を取得できるようにしたいと考えています。この例では、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

これはとても基本的なことのように思えます。申し訳ありませんが、自分が何を考えすぎているのかわかりません。

4

2 に答える 2

0

これを1行で行う方法は次のとおりです

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

splitの値Kに従っての値をグループ化し、グループごとの平均Jを計算します。sapply(..., mean)

于 2011-07-22T11:41:53.863 に答える