2017-06-22 22 views
1

愚かなように見えるかもしれませんが、私が望むようにデータを丸めるのに成功していません。 これは私の配列の例です:切り上げと切り捨てR

a<-c(-0.5:30,by=5)

私が欲しいものです:min(a)に切り捨て 10の倍数に次の番号が、max(a)にラウンドアップのために。

この場合:

min(a)=-0.5と私はそれが-10

max(a)=29.5に切り捨てたいと私は(30または40に)切り上げたいです。

私は思考して検索するのに時間を費やしましたが、何も見つかりませんでした。 ご協力いただければ幸いです。

よろしく、maxを切り上げについては フオン

答えて

1
a<- seq(from = -0.5, to = 30, by = 5) 

roundUp <- function(x,to=10) 
{ 
    to*(x%/%to + as.logical(x%%to)) 
} 
roundUp(max(a)) 

minを切り捨てる場合:

roundDw <- function(x,to=-10) 
{ 
    to*(x%/%to + as.logical(x%%to)) 
} 
roundDw(min(a)) 
+0

ご協力いただきありがとうございます。これは-10に丸められる-0.5の場合に有効です。たぶん私は間違って私の質問を説明したが、私が-0.5を-2.5に置き換えたとき、それは30となり、私は期待しなかった。私の期待は-10です。しかしmin(a)が-12ならば-20と期待します。 –

+0

あなたの数字の予想される範囲は何ですか?あなたの配列に数字がありますか? – AK88

+0

完璧です。それは私が最大1を行うことができたようだ –

1

あなたはplyrからround_anyを使用することができます。

library(plyr) 

a <- seq(-0.5, 30, by = 5) 

round_any(min(a), 10, f = floor) 
## -10 

round_any(max(a), 10, f = ceiling) 
## 30 
関連する問題