2

複数の列があり、他の列の 1 つの列のパーセンテージが同じであることを確認したいと考えています。例えば;

ST  cd  variable
1   1   23432
1   1   2345
1   2   908890
1   2   350435
1   2   2343432
2   1   9999
2   1   23432 

だから私がやりたいことは:

ST と cd が同じ場合、同じ ST と cd を持つすべての行の変数のパーセンテージを見つけます。したがって、最終的には次のようになります。

ST  cd  variable  percentage
1   1   23432     90.90%
1   1   2345      9.10%
1   2   908890    25.30%
1   2   350435    9.48%
1   2   2343432   65.23%
2   1   9999      29.91%
2   1   23432     70.09%

Rでこれを行うにはどうすればよいですか?

すべての助けをありがとう。

4

3 に答える 3

1

使用dplyr:

require(dplyr)

df %>% group_by(ST, cd) %>% mutate(percentage = variable/sum(variable))

#  ST cd variable percentage
#1  1  1    23432 0.90902743
#2  1  1     2345 0.09097257
#3  1  2   908890 0.25227624
#4  1  2   350435 0.09726856
#5  1  2  2343432 0.65045519
#6  2  1     9999 0.29909366
#7  2  1    23432 0.70090634

必要に応じてこれを変更できます。

dd %>% group_by(ST, cd) %>% mutate(percentage = round(variable/sum(variable)*100, 2))

#  ST cd variable percentage
#1  1  1    23432      90.90
#2  1  1     2345       9.10
#3  1  2   908890      25.23
#4  1  2   350435       9.73
#5  1  2  2343432      65.05
#6  2  1     9999      29.91
#7  2  1    23432      70.09
于 2014-06-16T16:27:48.950 に答える