在同一列中计算NA与NA的百分比?

时间:2018-04-26 12:46:18

标签: r dataframe statistics percentage

我有下面的数据框,其中包含一个NA值,我想创建一个名为Percentages的新列,所以df $百分比,这样它就可以作为值列中每个数字的百分比除以总数

        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

有关如何创建该百分比列的任何想法?

我尝试了所有不同的东西,但没有解决方案!

感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

试试这个解决方案:

    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<-data.frame(Country=c("UK","UK","UK","UK","UK","UK","Total"),Value=c(50,20,15,10,5,NA,100))

注意:使用评论

中的信息进行了更新

答案 1 :(得分:0)

根据评论中的说法,我会给你一个扩展的解决方案(我的类似于@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