【问题标题】:adding factor levels with empty values to the df [duplicate]将具有空值的因子水平添加到 df [重复]
【发布时间】:2019-02-20 19:46:00
【问题描述】:

我有这个 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 具有 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   

但是,为了避免在此示例中专门针对 TwoFour 求解的解决方案,也可能发生以下情况:

  • 所有因子都有Quantity value > 0,或者可能只有两个因子值有Quantity > 0。说到这里,我试图找到一个解决方案,它检查哪个因子不在 df 中(因为它有Quantity == 0,如果因子有Quantity == 0,请按照上面所需的输出添加到 df。

【问题讨论】:

  • 函数tidyr::complete() 是一个好的开始,即complete(df,Value),然后将NA 替换为0,或者您可以使用fill 中的fill 参数指定填充值complete

标签: r dplyr data-manipulation


【解决方案1】:

这是一个可能的解决方案#用所有级别填充第一列

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

【讨论】:

    猜你喜欢
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    相关资源
    最近更新 更多