私たちは「AgeRange」を作成するためにcut
を使用し、data.table
からdcast
と「ワイド」形式に変換し、これはdcast
としてdata.table
で、より簡単にすることができます(ここでは、我々はmean
として指定)fun.aggregate
を持っています。
library(data.table)
dcast(setDT(df1)[, AgeRange := cut(Age, breaks = c(0, 25, 50),
labels = c("0-25", "26-50"))],
AgeRange~Gender, value.var = "BMI", mean)
# AgeRange Female Male
#1: 0-25 NaN 18
#2: 26-50 20 23
またはdplyr
を使用して、我々はcut
によって基「AgeRange」と「性別」の欄に「男性」と「女性」に該当する「BMI」のmean
とばかりsummarise
を作成することができます。ここで
library(dplyr)
df1 %>%
group_by(AgeRange = cut(Age, breaks = c(0, 25, 50),
labels = c("0-25", "26-50"))) %>%
summarise(Male_BMI_Avg = mean(BMI[Gender=="Male"]),
Female_BMI_Avg = mean(BMI[Gender=="Female"]))
# AgeRange Male_BMI_Avg Female_BMI_Avg
# <fctr> <dbl> <dbl>
#1 0-25 18 NaN
#2 26-50 23 20
最短の方法です:あなたはあなたの努力と可能性のあるエラーを公開し、SO、必要に応じて何かを提案します。 – statosdotcom
私は次のように問題を解決できました。 ステップ1:サブセットMaleData ステップ2:MaleData ステップ3で使用CUT:MaleData のBMIに集約ステップ4:1 DATAFRAMEにマージそれら:FemaleData ステップ5でstep1- STEP3を繰り返し – Iqbal