前提・実現したいこと
以下のようなデータフレームを想定します。
R
1> a <- rnorm(5, mean = 10, sd = 1) 2> b <- rnorm(5, mean = 10, sd = 2) 3> c <- rnorm(5, mean = 10, sd = 3) 4> data = data.frame(A=a, B=b, C=c) 5> data 6 A B C 71 11.417663 10.433327 10.734107 82 9.140156 8.982920 6.379258 93 10.820404 8.570505 10.336776 104 9.244580 11.101520 14.621967 115 11.307779 11.401912 6.052596 12
変数Aを変数Cで割った新たな変数A_divをdataに挿入します。
Bについても同様の処理を行いたいのですが、これを繰り返し処理で実行したいです。
目標は以下のようなデータフレームを取得すること。
R
1> data <- transform(data, A_div = data$A/data$C) 2> data <- transform(data, B_div = data$B/data$C) 3> data 4 A B C A_div B_div 51 11.417663 10.433327 10.734107 1.0636807 0.9719790 62 9.140156 8.982920 6.379258 1.4327930 1.4081450 73 10.820404 8.570505 10.336776 1.0467871 0.8291275 84 9.244580 11.101520 14.621967 0.6322392 0.7592358 95 11.307779 11.401912 6.052596 1.8682525 1.8838052
試したこと
新たに挿入する変数名は共通して"_div"という文字列を持っているのでpaste関数とtransform関数を組み合わせて実行しようとしましたが、以下のようなエラーを吐き出しました。
transform関数の列名指定にpaste関数の結果は適用できないそうです。
何かほかに良い方法がないか教えていただけませんでしょうか?
R
1> list <- list("A", "B") 2> for (i in list){ 3+ data <- transform(data, paste(i, "div", sep = "_") = unlist(data[i])/data$C) 4 エラー: 予想外の '=' です in: 5"for (i in list){ 6 data <- transform(data, paste(i, "div", sep = "_") =" 7> } 8 エラー: 予想外の '}' です in "}"
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。