我目前有一个类似于此的数据框
编辑新数据框的新更新
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很新,所以感谢任何帮助
谢谢
答案 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))