2017-02-06 6 views
-2

RIでデータセット 'cars'を使用すると、列 'speed'の値に応じて列 'dist'の平均をとる新しい列をこのデータセットに追加することができます。また、グループ化パラメータとして 'スピード'を評価するRを持つ。R他の列に基づく新しい変数

だから、最初、私は車の$速度の独特の速度を反映した19グループが必要です。私は平均distのが何であるかを知りたいのですが、これらの19個のグループのそれぞれについて

4 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 

を、だけ少なくとも一つの場合これらの19種類の項目のそれぞれの項目は基準を満たしています(たとえば、少なくとも1つのdist値が20を超えています)。

車のデータセットでは、速度4から12の車でこのようなものが得られます。

speed dist avr_dist_if_one_speed_is_above20 
4 2 none 
4 10 none 
7 4 13 
7 22 13 
8 16 none 
9 10 none 
10 18 26 
10 26 26 
10 34 26 
11 17 22.5 
11 28 22.5 
12 14 21.5 
12 20 21.5 
12 24 21.5 
12 28 21.5 
... 

スピード4の2台の車はどちらも20未満のdistを持っているので、これらの2つのエントリーの平均は得られません。スピード7のクルマの場合、スピード7の少なくとも1台のクルマが20以上のスピードを持っているので、平均走行距離は13になります。

スピード8と9のクルマの場合、これらの車が速度10と車二以来26

の平均を返す私は22.5

を取得速度11と自動車用20

上記DISTを有していなければならない速度10と20の車下DISTを有します

スピード12の車では21.5になります。

残りのすべてがdist> 20の車を含むので、Rコードはすべての残りの速度カテゴリの平均distを計算する必要があります。

+2

これは、コード・書き込みサービスではありません。これを自分で解決しようとしている間に、あなたが書いたコードを追加してください。 –

+0

いくつかの列でグループ化するには、 'dplyr'や' data.table'を参照してください。あなたがRでグループ化し、要約することについてGoogleの場合、あなたはおそらくStackoverflowであなたの答えを見つけるでしょう。 – steveb

+0

私は事前に謝罪します。私はRにとって非常に新しく、コーディングの理解はほとんどありません。上記の例のコードはありません。私は手作業で出力を生成しました。 – swk

答えて

0

私はあなたの質問を正しく理解している場合、これはあなたが探していることを行います。

library(dplyr) 

cars %>% 
     group_by(speed) %>% 
     summarise(n = n(), 
        avg_dist = ifelse(any(dist > 20),mean(dist, na.rm = T), NA) 
+0

OPによって出力がどのように表示されるかを考えると、 'mutate'を使って要約したくないでしょう。 OPは、入力データに追加された新しい列を示します。 – steveb

+0

私は形式変更の前にこれに答えていたので、OPがそれをスピードでグループ化したかったという説明を外していました。 – Puddlebunk

+0

はい。これだよ。 – swk

0

これを試してみてください:

library(dplyr) 

cars %>% 
     group_by(speed, dist) %>% 
     group_by(speed) %>% 
     mutate(avr_dist_if_one_speed_is_above20 = mean(dist[max(dist)>20])) 
関連する問題