根据总计计算R数据框中的百分比?

时间:2018-04-26 10:21:11

标签: r dataframe percentage

我目前有一个类似于此的数据框

编辑新数据框的新更新

    Country    Information  Value 
    UK         Cars         50 
    UK         Sheep        20
    UK         Cats         15
    UK         Dogs         10 
    UK         Shoes        3
    UK         Hats         2
    Total                   100

Country列重复相同6次,最后一行称为Total,Information只是随机信息,Value是数字,它们总和为100,从最高到最低为降序

我想在R中找到一种方法来添加一个新列(df $ Percentage),它根据列值中的总计百分比计算每一行的百分比

所以例如新列将有

Country    Information  Value     Percentage 
    UK         Cars         50     0.50 (or can be 50%)
    UK         Sheep        20     0.20 
    UK         Cats         15     0.15
    UK         Dogs         10     0.10
    UK         Shoes        3      0.03
    UK         Hats         2      0.02
    Total                   100    1.00 (or nothing here)

等到达数据帧的末尾,其中TOTAL将为空(假设百分比已经停止到那里或等于1)

我对R很新,所以感谢任何帮助

谢谢

1 个答案:

答案 0 :(得分:1)

df$percentage <- df$Value/(sum(df$Value)/2)
#results
  Country Information Value percentage
1      UK        Cars    50       0.50
2      UK       Sheep    20       0.20
3      UK        Cats    15       0.15
4      UK        Dogs    10       0.10
5      UK       Shoes     3       0.03
6      UK        Hats     2       0.02
7   Total               100       1.00

我将总和除以2,因为最后一行已经包含了值列的总和

编辑以提供可重现的示例:

structure(list(Country = c("UK", "UK", "UK", "UK", "UK", "UK", 
"Total"), Information = c("Cars", "Sheep", "Cats", "Dogs", "Shoes", 
"Hats", ""), Value = c(50, 20, 15, 10, 3, 2, 100)), .Names = c("Country", 
"Information", "Value"), class = "data.frame", row.names = c(NA, 
-7L))