/ /列の中央値と他の列の値を検索しますか? (R)-r、excel、plyr、mean

列の中央値を計算し、他の列値を参照しますか? (R)-r、excel、plyr、mean

私はこのテーブルを持っています:

Profession Educational_level Number
Doctor     Low               0
Doctor     Medium            5
Doctor     High              8
Nurse      Low               1
Nurse      Medium            8
Nurse      High              3
[...]

中央値の人の教育レベルを調べて、この表で終わりたいと思います:

Doctor     High
Nurse      Medium
[...]

質問:

  1. Rでこれをどうやって行うのですか?
  2. そしてExcelで?

ありがとう。

回答:

回答№1は2

追加のパッケージに依存することがワークフローにとって問題でない場合は、@ PaulHiemstraの回答をお勧めします。それ以外の場合、これはおそらくベースRで行う最も簡単な方法です。

df <- read.csv(text="Profession Educational_level Number
Doctor     Low               0
Doctor     Medium            5
Doctor     High              8
Nurse      Low               1
Nurse      Medium            8
Nurse      High              3", header=TRUE)

results <- by(df, INDICES=dat$Profession,
FUN=function(subset) with(subset, Educational_level[which.max(Number)]))
data.frame(names(results), unclass(results))

回答№2の場合は1

職業ごとの教育レベルの中央値を探しているとは思わないが、モード、つまり頻度が最も高いカテゴリを探していると思う。これを得るには、 ddply plyrパッケージから:

require(plyr)
ddply(df, .(Profession), summarise,
mode_educ = Educational_level[which.max(Number)]

どこで df データを含むdata.frameです。


回答№3の場合は1

Excelでは、このような「配列式」を使用できます

=INDEX(B2:B10,MATCH(1,(A2:A10="Doctor")*(C2:C10=MEDIAN(IF(A2:A10="Doctor",C2:C10))),0))

CTRL + SHIFT + ENTERで確認

それはあなたの例ではうまくいきますが、本物の中央値、たとえば4人の医師がいる場合、医師の中央値は2番目と3番目の中間です。したがって、リストに値がない可能性があります。どの教育レベルを割り当てるかをどのように知るのでしょうか。