用NA'计算R中的百分比;谁在同一列?

用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

我有下面的数据框,其中包含一个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        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

total
df$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