20

私はデータフレームを持っています:

x <- data.frame(id = letters[1:3], val0 = 1:3, val1 = 4:6, val2 = 7:9)
#   id val0 val1 val2
# 1  a    1    4    7
# 2  b    2    5    8
# 3  c    3    6    9

各行内で、各値に対応する比率 (比率) を計算したいと考えています。たとえば、列「val0」の値について、行単位の val0 / (val0 + val1 + val2) を計算したいとします。

望ましい出力:

  id     val0  val1   val2
1  a    0.083  0.33   0.583
2  b    0.133  0.33   0.533
3  c    0.167  0.33   0.5

これを行う最善の方法を誰か教えてもらえますか? ここでは 3 つの列だけですが、多数の列が存在する可能性があります。

4

4 に答える 4

7

janitor パッケージの関数adorn_percentages()はこれを行います:

library(janitor)
x %>% adorn_percentages()
 id       val0      val1      val2
  a 0.08333333 0.3333333 0.5833333
  b 0.13333333 0.3333333 0.5333333
  c 0.16666667 0.3333333 0.5000000

これは と同等x %>% adorn_percentages(denominator = "row")です"row"が、 はデフォルトの引数であるため、この場合は必要ありません。同等の呼び出しは、パイプadorn_percentages(x)なしでそれを好む場合です。%>%

免責事項:私は janitor パッケージを作成しましたが、これを投稿するのが適切だと感じています。この関数は、コードを読みやすくしながら、このタスクを正確に実行するように構築されており、パッケージは CRAN からインストールできます。

于 2016-10-13T20:36:53.723 に答える