如果匹配,数据框列上的 ifelse 将替换为日期时间列值
ifelse on data frame column to replace with date time column values if matched
我需要帮助。我正在尝试根据 txt_col
列的匹配值将 date_time
列值复制到新列中,不匹配的值标记为 NA
。这是我的代码:
df$new_col <- ifelse(df$txt_col == "apple", df$date_time, NA)
但是,我在新列中得到数字,而不是日期时间:
new_col
1477962000
1451755980
1451755980
1451755980
查看 str(df)
时,第 date_time
列是 POSIXct
。我尝试转换 as.numeric
和 POSIXct
,但没有成功。如果您有更优雅的方法来完成我想要实现的目标,如果您分享,我们将不胜感激。谢谢。
将 dplyr
封装为一个更严格的函数 if_else
来验证 class 真假组件。为 NA 值显式提供 class 使这更 "type safe"
library(dplyr)
df <- data.frame(txt_col = c("apple", "apple", "orange"),
date_time = as.POSIXct(c("2017-01-01", "2017-01-02", "2017-01-03")))
# use dplyr::if_else instead, and provide explicit class
df$new_col <- if_else(df$txt_col == "apple", df$date_time, as.POSIXct(NA))
df
# txt_col date_time new_col
# 1 apple 2017-01-01 2017-01-01
# 2 apple 2017-01-02 2017-01-02
# 3 orange 2017-01-03 <NA>
我需要帮助。我正在尝试根据 txt_col
列的匹配值将 date_time
列值复制到新列中,不匹配的值标记为 NA
。这是我的代码:
df$new_col <- ifelse(df$txt_col == "apple", df$date_time, NA)
但是,我在新列中得到数字,而不是日期时间:
new_col
1477962000
1451755980
1451755980
1451755980
查看 str(df)
时,第 date_time
列是 POSIXct
。我尝试转换 as.numeric
和 POSIXct
,但没有成功。如果您有更优雅的方法来完成我想要实现的目标,如果您分享,我们将不胜感激。谢谢。
将 dplyr
封装为一个更严格的函数 if_else
来验证 class 真假组件。为 NA 值显式提供 class 使这更 "type safe"
library(dplyr)
df <- data.frame(txt_col = c("apple", "apple", "orange"),
date_time = as.POSIXct(c("2017-01-01", "2017-01-02", "2017-01-03")))
# use dplyr::if_else instead, and provide explicit class
df$new_col <- if_else(df$txt_col == "apple", df$date_time, as.POSIXct(NA))
df
# txt_col date_time new_col
# 1 apple 2017-01-01 2017-01-01
# 2 apple 2017-01-02 2017-01-02
# 3 orange 2017-01-03 <NA>