识别R条件语句中的空白

  • 本文关键字:空白 语句 条件 识别 r
  • 更新时间 :
  • 英文 :


我有一个庞大的数据库,正试图有效地添加一个新的计算列,这取决于另一个列的状态。例如,假设我的df中有3列。

如果col1不为空,那么我想应用公式(df$col3*df$col1^df$col2(。如果col1为空,那么我希望新列的值为df$col3。我试过

df$col4<-ifelse(df$col1 == "", (df$col3 * df$col1 ^ df$col2), df$col3)

但我遇到的问题是,它无法识别df$col1中的空单元格。我还尝试过制作df$col1==NA,但没有成功。如何使我的条件语句识别R中的空单元格,并做出相应的响应?

可能有空格而不是空白。一个选项是用trimws包装以删除"col1"上的空格,然后应用ifelse

ifelse(trimws(df$col1) != "", (df$col3 * as.numeric(df$col1) ^ df$col2), df$col3)

如果列"col1"是numeric并且具有NA元素,则使用标准is.na检查NA元素

ifelse(!is.na(df$col1), (df$col3 * df$col1 ^ df$col2), df$col3)

如果你有一个大型数据库,你可以考虑使用data.table来提高分配效率。在这里,我将col3分配给col4,然后通过"链接"两个表达式,将派生值再分配给col1中不是NA的值

library(data.table)
setDT(df)
df[, col4 := col3][!is.na(col1), col4 := col3 * col1 ^ col2]

最新更新