用NA'计算R中的百分比;谁在同一列?
我有下面的数据框,其中包含一个NA值,我想创建一个名为Percentages的新列,因此df$Percentages,它是值列中每个数字的百分比除以总数用NA'计算R中的百分比;谁在同一列?,r,dataframe,statistics,percentage,R,Dataframe,Statistics,Percentage,我有下面的数据框,其中包含一个NA值,我想创建一个名为Percentages的新列,因此df$Percentages,它是值列中每个数字的百分比除以总数 Country Information Value percentage 1 UK Cars 50 0.50 2 UK Sheep 20 0.20 3 UK Cats 15 0.15 4 UK
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 5 0.05
6 UK Hats NA NA (or 0 or NULL)
7 Total 100 1.00
关于如何创建百分比列有什么想法吗
我尝试了所有不同的方法,但没有解决办法
谢谢你的帮助 试试这个解决方案:
df$percentage<-c(df[1:nrow(df)-1,"Value"]/sum(df[1:nrow(df)-1,"Value"],na.rm = T),1)
df
Country Value percentage
1 UK 50 0.50
2 UK 20 0.20
3 UK 15 0.15
4 UK 10 0.10
5 UK 5 0.05
6 UK NA NA
7 Total 100 1.00
df$percentage根据评论中的内容,我将给您一个扩展的解决方案(我的类似于@Terru_theTerror)
- 定义定义总计的范围,方法是假设最后一行为总计,或假设除最后一行外的每一行的总和为总计
- 将你的值除以这个总数
翻译成R,这就给出了
total <- df$Value[nrow(df)] # or total <- sum(df$Value[1:(nrow(df)-1)], na.rm = T)
df$percentage <- df$Value/total
totaldf$percentage不完全正确,仍然得到了非百分比的大值-有什么想法吗?您的数据集中有负值吗?因为如果值为正数,sum(df$value)
应始终高于或等于df$value
的任何值。值是数据帧中的值没有负,但我得到的值例如数字50为0.25?哪一个是正确的?那是因为你在计算总和中的“总数”,所以你用50除以50+20+15+10+5+100=200,而不是100。我提供了通用的解决方案。从数据集中排除最后一行。
total <- df$Value[nrow(df)] # or total <- sum(df$Value[1:(nrow(df)-1)], na.rm = T)
df$percentage <- df$Value/total