2016-06-26 20 views
0

多くの異なるデータセットを持つRのデータを解析しています。ダミー変数を関数に送り、メインデータセットをサブセット化し、サブセットの変数の平均値を出力します。例えば動的変数を持つ関数

、私のデータセットは、「2」と命名し、私のダミー変数は「over50」であると私の機能があるさ:

getMean <- function(varName) { 
    sub1 <- two[two$varName == 1, ] 
    sub2 <- two[two$varName == 0, ] 
    print(mean(sub1$return) 
    print(mean(sub2$return) 
} 

しかし、私はgetMean(over50)を呼び出すときに、私は期待答えを得ることはありません。

私はこれを動的に行うことができるように、関数の入力をvar名に変換する方法はありますか?または、これらの計算を手動で行う必要がありますか?

答えて

1

あなたが望む構文はtwo[two[, varName] == 0, ]だと思います。

さらに一般的には、data[c("row1", "row2"), c("col1", "col2")]という文字列を渡してデータフレームの列/行にアクセスできます。

サイドノート:print()のステートメントには、閉じ括弧がいくつかありません。

0

この例では、文字列を関数に渡す方が簡単です。ここでは、data.frameと変数名(文字列)をとる汎用関数を示します。

getMean <- function(df, varName) { 
    mean1 <- mean(df[df[[varName]] == 1, ]$return) 
    mean2 <- mean(df[df[[varName]] == 1, ]$return) 

    return(c("mean1"=mean1, "mean2"=mean2)) 
} 

これは2つの手段で名前付きベクトルを返します。 df引数はdata.frame名(引用符なし)でなければなりませんが、varnameは文字列でなければなりません。

関連する問題