【发布时间】: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
有如下两列的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
索引赋值:
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
ifelse:
ifelse(is.na(df$method) & !is.na(df$Value), "H2O", df$method)
replace(比ifelse更安全)
replace(df$method, is.na(df$method) & !is.na(df$Value), "H2O")
(当然需要将2和3分配回列。)
【讨论】:
replace(rep(Sys.time(), 2), c(T,F), Sys.time()) 与ifelse(c(T,F), Sys.time(), Sys.time()) 进行比较。见stackoverflow.com/q/6668963/3358272