2016-06-22 5 views
0

除算の商で一連の列を追加したいと思います。私のデータフレームは、次のようになります。除算の商で複数の列を追加する関数を書くR

views01 users01 views02 users02 
    2  4  4  1    
    4  5  11  2    
    5  2  9  4    

私は、分割ビュー(N)/ユーザー(n)を計算し、そのように、DFに列を追加するコードの一部を書きたいのですが:

views01 users01 views02 users02 views_per_user01 views_per_user02 
    2  4  4  1   0.5    4 
    4  5  11  2   0.8    5.5 
    5  2  9  4   2.5    2.25 

当分の間、私はそのようなコードの行作成しました:例それぞれについて、

df$views_per_user01=df$views01/df$users01 
df$views_per_user02=df$views02/df$users02 

を、私は、単一の行にそれを縮小したいと思います。 ありがとうございます。

+0

どれをあなたがこれをしたい特定の言語ですか? – Kusalananda

+1

申し訳ありません、タイトルを編集しました。 –

答えて

0

一つの方法を、それはあなたのデータフレームがあなたの例ごとにソートされると仮定して行うために、

cbind(df, sapply(unique(sub('\\D+', '', names(df))), 
         function(i) Reduce('/', df[,grepl(i, sub('\\D+', '', names(df)))]))) 

# views01 users01 views02 users02 01 02 
#1  2  4  4  1 0.5 4.00 
#2  4  5  11  2 0.8 5.50 
#3  5  2  9  4 2.5 2.25 
+1

うん、それは私が探していたものだ。ありがとう –

0

あなたは、新しい列を追加するdplyrmutate機能を使用することができます。

library(dplyr) 
mutate(df, views_per_user01=views01/users01,     
      views_per_user02=views02/users02) 
関連する問題