将具有空值的因子水平添加到df

时间:2019-02-20 19:46:01

标签: r dplyr data-manipulation

我有这个df:

  Value Quantity Percentage 
1 One         18      0.409     
2 Three        2      0.045     
3 Five        24      0.545     
4 Total       44      0.999     

值列具有六个因子级别:

> levels(df$Value)
[1] "One" "Two" "Three" "Four" "Five"            
[6] "Total"    

在创建上面的df之后,我试图添加在df中没有值的一个或多个因子,因为我需要绘制此表并显示哪个Value具有{ {1}}。喜欢:

Quantity == 0

但是,为了避免在此示例中仅针对 Value Quantity Percentage One 18 0.409 Two 0 0 Three 2 0.045 Four 0 0 Five 24 0.545 Total 44 0.999 Two的解决方案,可能还会发生以下情况:

  • 所有因子都具有Four,或者可能只有两个因子值具有Quantity value > 0。这样说,我正在尝试找到一种解决方案,在其中检查哪个因素不在df中(因为它具有Quantity > 0,并且如果该因素具有Quantity == 0,则按需要添加到df中上面的输出。

1 个答案:

答案 0 :(得分:2)

有可能在此解决方案#用所有级别填充第一列

df$Value<-factor(df$Value, levels=c("One", "Two", "Three", "Four", "Five", "Total" ))

#complete and fill the table
library(tidyr)
complete(df, Value, fill=list(Quantity = 0, Percentage =0))


df
 # A tibble: 6 x 3
  Value Quantity Percentage
  <fct>    <dbl>      <dbl>
1 One         18      0.409
2 Two          0      0    
3 Three        2      0.045
4 Four         0      0    
5 Five        24      0.545
6 Total       44      0.999