2016-03-18 14 views
0

データフレームがあり、各列はカテゴリ変数で、値は0または1のtargetという名前の列です。 データフレームを列でループして計算しようとしています各列の異なるレベルによる平均ターゲット。名前でデータフレームをループするR

n = c(2, 2, 1) 
s = c(1, 0, 1) 
b = c(TRUE, FALSE, TRUE) 
target = c(1,0,0) 
df = data.frame(n, s,b,target) 

for(i in 1:a){ 
    aggregate(df$target ~ as.name(colnames(df)[1]), df, mean) 
} 

私は単なる文字列で

aggregate(df$target ~ n, df, mean) 

にn個を置き換えることはできませんここにいるようです。この種の問題を解決するには?どうもありがとう。

+0

あなたは式 'aggregate(target〜n、data = df、FUN = mean)'を作成する必要があります。たとえば、 'sprintf'を使用して呼び出しを構築することができます。 'as.formula(sprintf(" target〜%s "、colnames(df)[i]))'。 –

+0

'lapply(df [、 - 4]、function(x){集合(ターゲット〜x、データ= df、FUN =平均)})'? – alistaire

+0

複数の集約DFSまたは実行/条件付き平均が必要ですか?希望の結果を説明してください。 – Parfait

答えて

0

RomanLuštrikさんのご意見ありがとうございました。

コードは、

for(i in 1:a){ 
col_formula <- as.formula(sprintf("target ~ %s", colnames(df)[i])) 
aggregate(col_formula, data=df, FUN=mean) 
} 

それは私が探していた結果を提供します。

関連する問題