2017-02-19 6 views
0

私はdata_vと呼ばれるデータを持っていて、そのうちの1つは給与です。データの範囲は0〜140 000です。異なる範囲(range1:0-10000、range2:10000-20000 ...)を探して、各範囲の中央値を計算し、範囲を中央値で置き換えます。Rで範囲を見つけて中央値に置き換えます

first = data_v$salaries[data_v$salaries>=0 & data_v$salaries<10000] 
data_v$salaries[data_v$salaries>=0 & data_v$salaries<10000] = median(first) 

second = data_v$salaries[data_v$salaries>=10000 & data_v$salaries<20000] 
data_v$salaries[data_v$salaries>=10000 & data_v$salaries<20000] = median(second) 

.............

ten=data_v$salaries[data_v$salaries>=90000 & data_v$salaries<=100000] 
data_v$salaries[data_v$salaries >= 90000 & data_v$salaries <= 100000] = median(ten) 

出力:

table(data_v$salaries) 

median 7949 17523 25939 34302 42827 56840 65423 73292 81900  95479.75 
#  130  2022  8481  9233  2661  1270  3864  2232  176  4 
私が所望の出力を得ることができています、これを使用して

whileループで成功しないと同じことを実装しようとしました:

さらに、歓迎された助言や提案があります。

+0

こんにちはBiljana、私はdplyr使用していますが、多分私たちに再現可能な例を与えることができる:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – biomiha

+0

私は同意すると、dplyrまたはdata.tableを使用できます。どちらのパッケージもデータ操作に適しています。あなたに完全な答えを与えるために再現可能な例が評価されます。 – cderv

答えて

2
data(mtcars) # data for test 
step = 10 # interval length, 10000 for your data 
n = ceiling(max(mtcars$mpg)/step) # number of intervals 
mtcars$mpg_interval = cut(mtcars$mpg, step*(0:n)) 
mtcars$mpg_median = ave(mtcars$mpg, mtcars$mpg_interval, FUN = median) 
+0

完全に動作します。ありがとうございました! – Jane

関連する問題