Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于总百分比计算R数据帧中的百分比?_R_Dataframe_Percentage - Fatal编程技术网

基于总百分比计算R数据帧中的百分比?

基于总百分比计算R数据帧中的百分比?,r,dataframe,percentage,R,Dataframe,Percentage,我现在有一个数据框,看起来像这样 编辑新数据帧的新更新 Country Information Value UK Cars 50 UK Sheep 20 UK Cats 15 UK Dogs 10 UK Shoes 3 UK Hats 2

我现在有一个数据框,看起来像这样

编辑新数据帧的新更新

    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,信息只是随机信息,值是数字,它们的总和为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相当陌生,因此非常感谢您的帮助


谢谢你

嗨,谢谢你的帮助,但我仍然没有得到正确的结果,有没有想过为什么?它目前说替换长度比原始长度短。你能给我们一个测试数据集,例如
dput(df)
并复制/粘贴此处的结果编辑了原始帖子,请查看新的数据框谢谢,如果您按照我之前的评论为我们提供一个可复制的数据集会更容易。您好,我已经添加了我正在使用的实际数据框,上面是我正在使用的真实数据框,谢谢youTry
df$
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
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))