0

例: 性別ごとの身長のデータセットがあります。カットポイントが平均として定義されている高さを低と高に分割したいと思います-各性別内の2sd。

データセットの例:

set.seed(8)
df = data.frame(sex = c(rep("M",100), rep("F",100)), 
                ht = c(rnorm(100, mean=1.7, sd=.17), rnorm(100, mean=1.6, sd=.16)))

ベクトル化されたコードの 1 行で何かを実行したいのですが、それが可能であると確信しているのですが、その書き方がわかりません。cut()apply()、および/またはdplyrこれを達成する方法があると思います。

4

3 に答える 3

1

cutベースRから使用してこれはどうですか:

sapply(c("F", "M"), function(s){
    dfF <- df[df$sex==s,] # filter out per gender
    cut(dfF$ht, breaks = c(0, mean(dfF$ht)-2*sd(dfF$ht), Inf), labels = c("low", "high"))
})
# dfF$ht heights per gender
# mean(dfF$ht)-2*sd(dfF$ht) cut point
于 2016-09-15T16:00:55.323 に答える