2017-07-31 7 views
-2

こんにちは、別の列に入るセグメントに基づいて特定の値の中央値を計算します。初期データ構造を以下のように与えられる:セグメント内のセグメントに基づいて計算する

Column A Column B 
559   1 
559   1 
322   1 
661   2 
661   2 
662   2 
661   2 
753   3 
752   3 
752   3 
752   3 
752   3 
328   4 
328   4 
328   4 

算出中央値をカラムAに基づくものであろうと、出力は次のようになります

Column A Column B Median 
559   1   559 
559   1   559 
322   1   559 
661   2   661 
661   2   661 
662   2   661 
661   2   661 
753   3   752 
752   3   752 
752   3   752 
752   3   752 
752   3   752 
328   4   328 
328   4   328 
328   4   328 

中央値をカラムAにとのために算出されます同じ列Bの値の集合。たとえば、列Bの値が同じである列Aのすべての値の中央値を計算し、列中央値に貼り付ける必要があります。

私はこの操作をrで行う必要がありますが、それを解読することはできませんでした。 dplyrや他のパッケージでこれを行う方法はありますか?

おかげ

+1

、%>%(中央値=中央値(column1のを))に変異 ' –

+0

これがない何らかの理由私は次のエラーを取得しました: 'mutate_impl(.data、dots)のエラー: 整数型ベクトルを期待している互換性のない型' –

答えて

0

あなたはlibrary(data.table)を使用することができ、その後、あなたのdataは、それが、ベースRとdata.table方法で行われ、ここでdata.table

dt <- as.data.table(data) dt[,Median:=median('Column A'),by="Column B"]

0

に入れます。あらかじめお詫び申し上げます - 私の基本的なアプローチはちょっと面倒かもしれません - あまり頻繁には使用しません。あなたは `DF%>%GROUP_BY(column2の)を行うことができますdplyr``使用して以下の回答に加えて

exampleData=data.frame(A=runif(10,0,10),B=sample(2,10,replace=T)) 


# Data.frame option 
exampleData$Median=tapply(exampleData$A,exampleData$B,median)[as.character(exampleData$B)] 

# Data.table option 
library(data.table) 
exampleData=data.table(exampleData) 
exampleData[,Median_Data_Table_Way:=median(A),by=B] 
関連する問題