0

こんな感じのデータがあります。SDそして、以下の標準偏差 ( ) と平均 ( )のリストを指定して、最大密度と最小密度を見つけたいと思いMEANます。

info0 info1 info2 SD Mean
10x     0       e0      0.38    1.14
10x     0       e2      0.74    1.48
10x     0       e4      1       1.85
10x     0       e6      1.24    2.27
10x     0.1     e0      0.35    1.13
10x     0.1     e2      0.69    1.44
10x     0.1     e4      0.96    1.82
10x     0.1     e6      1.21    2.23
10x     0.5     e0      0.34    1.12
10x     0.5     e2      0.67    1.4
10x     0.5     e4      0.95    1.75
10x     0.5     e6      1.19    2.17
10x     1       e0      0.29    1.09
10x     1       e2      0.59    1.32
10x     1       e4      0.87    1.66
10x     1       e6      1.11    2.06
10x     2       e0      0.23    1.06
10x     2       e2      0.5     1.24
10x     2       e4      0.79    1.54
10x     2       e6      1.04    1.9
10x     4       e0      0.22    1.0.5
10x     4       e2      0.41    1.15
10x     4       e4      0.65    1.37
10x     4       e6      0.91    1.7

これを試しましたが失敗しました。

dat <- read.table("test.dat", header = TRUE)
densities <- apply(dat[, 4:5], 1, function(x) rnorm(n = 1000000, mean = x[2], sd = x[1]))

maxden <- max(densities)
minden  <- min(densities)

それを行う正しい方法は何ですか?

4

1 に答える 1

1

最初に、このような膨大なデータセットと非常に多くのデータセットを操作しないことをお勧めしnますrnorm。これにより、コードを簡単にbrowser挿入して、何が起こっているのかを把握できます。まず、データの平均は、フォーマットで行ったことによる要因です。

 str(dat)
'data.frame':   24 obs. of  5 variables:
 $ info0: Factor w/ 1 level "10x": 1 1 1 1 1 1 1 1 1 1 ...
 $ info1: num  0 0 0 0 0.1 0.1 0.1 0.1 0.5 0.5 ...
 $ info2: Factor w/ 4 levels "e0","e2","e4",..: 1 2 3 4 1 2 3 4 1 2 ...
 $ SD   : num  0.38 0.74 1 1.24 0.35 0.69 0.96 1.21 0.34 0.67 ...
 $ Mean : Factor w/ 24 levels "1.0.5","1.06",..: 6 13 19 24 5 12 18 23 4 11 ...

それはコードで対処する必要があります。

これで、コードを使用して必要なものを取得できるようになりました(rnormのnを調整し、実際に使用するときにコードにさらに行を指定する必要がありますが、テスト目的ではこれが理想的でした)。

densities <- apply(dat[1:10, 4:5], 1, function(x) {
        rnorm(n = 10, mean = as.numeric(x[2]), sd = as.numeric(x[1]))
    }
)
于 2012-04-30T13:58:59.983 に答える