【问题标题】:Replace NA values with value from another column in same dataframe [duplicate]用同一数据框中另一列的值替换 NA 值[重复]
【发布时间】:2019-11-21 23:19:27
【问题描述】:

我想用同一数据框中另一列的值替换特定列中的 NA

DF1:

Item    From    Price    Discount    NewPrice
 A     Delhi    100        .10         110
 A     Mumbai   200        .10         120
 A     Pune     150         NA          NA
 A     Nagpur   200        .10          NA

我想将 NewPrice 中的 NA 替换为 Price 列中的值

我已经提到了这个,但它没有帮助Replace empty values with value from other column in a dataframe

尝试过以下一种但没有用

df$NewPrice <- ifelse(df$NewPrice == "", df$Price, df$NewPrice)

【问题讨论】:

  • 试试df$NewPrice &lt;- ifelse(is.na(df$NewPrice), df$Price, df$NewPrice) 看看是否可行
  • 在您的链接帖子中,空值是一个空字符串"",在您的情况下它是NA,所以我们需要检查is.na,正如安德鲁在上面的评论中显示的那样。
  • 成功了,谢谢@Andrew Baxter &zx8754

标签: r dataframe


【解决方案1】:

我会尝试使用标准子集:

#subset the NAs of new price with the ones from price
df$NewPrice[is.na(df$NewPrice)] <- df$Price[is.na(df$NewPrice)]

输出:

df
#  Item   From Price Discount NewPrice
#1    A  Delhi   100      0.1      110
#2    A Mumbai   200      0.1      120
#3    A   Pune   150       NA      150
#4    A Nagpur   200      0.1      200

【讨论】:

    【解决方案2】:

    tidyverse 解决方案:

    df %>% mutate(NewPrice=coalesce(NewPrice, Price))
    

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 2015-02-17
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2019-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多