【问题标题】:Assign a name to a cell while there is a value in another cell in R当 R 中的另一个单元格中有值时,为一个单元格分配一个名称
【发布时间】:2021-01-27 21:20:33
【问题描述】:

有如下两列的df:

method Value
H2O 10.2
NA 5.4
NA NA

如果 Value 列中有对应的值(这里是 5.4,但任何值),我想将单词“H2O”分配给方法列而不是 NA。所以我希望 df 看起来像这样:

method Value
H2O 10.2
H2O 5.4
NA NA

我正在寻找 R 中的一段代码来为我的整个表格执行此操作。

【问题讨论】:

    标签: r


    【解决方案1】:
    1. 索引赋值:

      df$method[is.na(df$method) & !is.na(df$Value)] <- "H2O"
      df
      #   method Value
      # 1    H2O  10.2
      # 2    H2O   5.4
      # 3   <NA>    NA
      
    2. ifelse:

      ifelse(is.na(df$method) & !is.na(df$Value), "H2O", df$method)
      
    3. replace(比ifelse更安全)

      replace(df$method, is.na(df$method) & !is.na(df$Value), "H2O")
      

    (当然需要将2和3分配回列。)

    【讨论】:

    • 感谢 r2evans,帮了大忙。
    • 您知道 StackOverflow 上的“规范”(礼仪)是 accept 回答您的问题时的答案吗?不要着急,请确保,但是当您确定时,请回来这样做。这样做不仅为回答者提供了一些积分,而且还为有类似问题的读者提供了一些关闭。 (请考虑返回您的previous question 并接受其中之一。)谢谢!
    • @r2evans ,为什么更换比 ifelse 更安全?
    • 首先,将replace(rep(Sys.time(), 2), c(T,F), Sys.time())ifelse(c(T,F), Sys.time(), Sys.time()) 进行比较。见stackoverflow.com/q/6668963/3358272
    猜你喜欢
    • 2020-11-15
    • 1970-01-01
    • 2019-05-16
    • 2016-03-26
    • 2019-01-13
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    相关资源
    最近更新 更多