0

重複の可能性:
R を最も近い .5 または .1 に丸める R
で 1、2 または 1.1、1.2、1.3 ではなく、1、1.5、2 などに丸めるにはどうすればよいですか?

コンマの後に数桁の数値を四捨五入したい場合

a <- 2.1357

使うことができます

round(a, 1)

結果として 2.1 を取得します。

次に、次のような数値の配列を用意します

b <- rnorm(n = 10, mean = .5, sd = .1)
> b
[1] 0.5554950 0.4527671 0.5217543 0.6137458 0.6023219 0.7045009 0.5140363 0.5312920
[9] 0.5841152 0.4492901

0.1 の倍数にするためにこれらの数値を丸めたい場合は、入力するだけで十分です

round(b, 1)

ここで私の質問: 0.2の倍数を作成するためにそれらを丸めたい場合はどうすればよいですか? または0.3 ? または0.25 ...など?

ありがとう、

4

3 に答える 3

6
a <- runif(20)  # Data
mult <- .125    # Multiple
mult*round(a/mult)

あなたを取得します

 [1] 0.250 0.750 0.125 0.625 0.000 0.500 0.125 0.500 0.125 0.875 1.000 0.750
[13] 0.500 0.500 0.125 0.500 0.250 0.250 0.250 0.875
于 2012-08-17T15:15:04.997 に答える
4

これは役に立ちますか

b <- rnorm(n = 10, mean = .5, sd = .1) 
b
library(plyr)
round_any(b, 0.1)
于 2012-08-17T15:42:22.523 に答える
2

@Backlin が提供する回答は、これを実行するための最も簡単な方法ですが、最終結果の分布を気にする場合は、サンプルをどのように描画するかを慎重に検討する必要があることに注意してください。たとえば、これは単純な方法を使用してランダムなユニフォームから 100 万回描画した結果です。

> a <- runif(1000000)
> mult <- 0.125
> samp <- mult * round(a/mult) 
> table(samp)

samp
     0  0.125   0.25  0.375    0.5  0.625   0.75  0.875      1 
 62889 125172 124564 125096 125443 124716 124899 124988  62233 

元のデータは一様[0,1]分布から抽出されたものですが、丸め分布の分布では 0 と 1 が過小評価されていることに注意してください。[0,1]の増分でユニフォームからランダムなサンプルが本当に必要な場合は0.125、 and を使用sampleseqます。

> rng <- seq(0, 1, 0.125)
> samp <- sample(rng, 1000000, replace=TRUE)
> table(samp)
samp
     0  0.125   0.25  0.375    0.5  0.625   0.75  0.875      1 
111206 111209 111222 110972 110617 111200 110827 111199 111548

これは、均一な分布から引き出すことをお勧めする方法です。考えられる結果に異なる重みを付けたい場合は、prob引数 to を使用できますsample。正規分布など、上限と下限が明確に定義されていない別の分布から描画したい場合は、同様の問題が発生する場合と発生しない場合があります。慎重に検討し、多くのテストを実行して、目的のディストリビューションが得られていることを確認する必要があります。

于 2012-08-17T15:45:18.333 に答える