2

cut2ライブラリでR 関数を使用していますHmisc。私はそれに数値のベクトルを与えて、それを同じサイズの間隔に変えます:

library(Hmisc)
vals = c(100, 1000, 2000, 3000, 40000, 50000, 60000)
vals_cut = cut2(vals, g=3)
vals_cut
[1] [  100, 3000) [  100, 3000) [  100, 3000) [ 3000,50000) [ 3000,50000) [50000,60000] [50000,60000]
Levels: [  100, 3000) [ 3000,50000) [50000,60000]

vals_cut他の人と共有するときに画像を使用しようとすると、問題が発生します (統計グラフィックなど)。a) 数値にカンマがなく、b) カンマと 2 番目の数値の先頭の間にスペースがないため、出力が読みにくいと感じる人がいます。

この方法で出力を変更する cut2 のオプションが見つかりません。誰でもこれを行う簡単な方法をお勧めできますか? ありがとう。

4

2 に答える 2

2

間隔のレベルをフォーマットするためだけの関数を次に示します。

formatInterval <- function(x, intsep=", ") {
  if (length(x) > 1) {
    sapply(x, formatInterval, intsep=intsep)
  } else {
    makePretty <- function(z) {
      prettyNum(gsub("[^0-9]", "", z), big.mark=",")
    }
    bracket1 <- substr(x, 1, 1)
    bracket2 <- substr(x, nchar(x), nchar(x))
    x2 <- strsplit(x, ",")
    paste(bracket1,
          makePretty(x2[[1]][1]),
          intsep,
          makePretty(x2[[1]][2]),
          bracket2,
          sep="")    
  }
}

> levels(vals_cut) <- formatInterval(levels(vals_cut))
> vals_cut
[1] [100, 3,000)     [100, 3,000)     [100, 3,000)     [3,000, 50,000)  [3,000, 50,000)  [50,000, 60,000]
[7] [50,000, 60,000]
Levels: [100, 3,000) [3,000, 50,000) [50,000, 60,000]

または、これはより良く見えるかもしれません

> formatInterval(levels(vals_cut), intsep=" - ")
      [  100, 3000)       [ 3000,50000)       [50000,60000] 
    "[100 - 3,000)"  "[3,000 - 50,000)" "[50,000 - 60,000]" 
于 2014-03-14T23:21:20.557 に答える