2

data$formには、170 の一意の異なる値 (1 から ~800 までの数値) が含まれます。いくつかの値をマージしたいと思います (たとえば、10 半径/ステップ)。

使用するには、これを行う必要があります。

colors = rainbow(length(unique(data$form)))

プロットで、より良い視覚的結果を提供します。

よろしくお願いいたします。

4

2 に答える 2

3

を使用することもできますcut。引数 を使用するlabels=FALSEと、整数値が得られます。

form <- runif(170, min=1,max=800)
> cut(form, breaks=20)
[1] (518,558]  (280,320]  (240,280]  (121,160]  (757,797]  
[6] (160,200]  (320,359]  (598,638]  (80.8,121] (359,399]  
[7] (121,160]  (200,240] ...
20 Levels: (1.18,41] (41,80.8] (80.8,121] (121,160] (160,200] (200,240] (240,280] (280,320] (320,359] (359,399] (399,439] ... (757,797]

> cut(form, breaks=20, labels=FALSE)
 [1] 14  8  7  4 20  5  9 16  3 10  4  6  5 18 18  6  2 12  
[19] 2  19 13 11 13 11 14 12 17  5 ...

余談ですが、データの読み取りが歪むため、虹色でプロットすることを再検討してください。レインボー カラー マップ (まだ) 有害と見なされます。

于 2013-05-14T11:52:20.710 に答える
3

を使用%/%して、それらをグループ化したりmean、結合したりnormalize、スケーリングしたりできます。

 # if you want specifically 20 groups:
 groups <- sort(form) %/% (800/20) 

 x <- c(by(sort(form), groups, mean))

 x <- normalize(x, TRUE) * 19 + 1

        0         1         2         3         4 
 1.000000  1.971781  2.957476  4.103704  4.948560 
        5         6         7         8         9 
 5.950617  7.175309  7.996914  8.953086  9.952263 
       10        11        12        13        14 
10.800705 11.901235 12.888889 13.772291 14.888889 
       15        16        17        18        19 
15.927984 16.864198 17.918519 18.860082 20.000000 
于 2013-05-14T10:29:48.380 に答える