在R中的数据框中查找日期

在R中的数据框中查找日期,r,dataframe,if-statement,R,Dataframe,If Statement,我尝试使用日期列表在数据框中查找相同的日期,并使用ifelse循环添加一个新列。代码如下: library(lubridate) df <- tibble(DateCol = seq(ymd("2021-01-01"),ymd("2021-05-31"),"days")) df2 <- c("2021-02-04","2021-02-07","2021-02-17"

我尝试使用日期列表在数据框中查找相同的日期,并使用ifelse循环添加一个新列。代码如下:

library(lubridate)
df <- tibble(DateCol = seq(ymd("2021-01-01"),ymd("2021-05-31"),"days"))

df2 <- c("2021-02-04","2021-02-07","2021-02-17","2021-02-25")

for (i in 1:length(df$DateCol)) {
  if (df$DateCol[i] == df2) {
    df$ValueCol[i] <- "1"
    } else {
      df$ValueCol[i] <- "0"
      return(i)
    }
  }
库(lubridate)

df您可以在不使用循环的情况下执行此操作

df$ValueCol <- as.integer(df$DateCol %in% as.Date(df2))
df

可以使用%
中的
%而不是
=
来更正循环,因为我们使用%
中的
%来比较多个值

library(tibble)
library(lubridate)

df <- tibble(DateCol = seq(ymd("2021-01-01"),ymd("2021-05-31"),"days"))

df2 <- as.Date(c("2021-02-04","2021-02-07","2021-02-17","2021-02-25"))
df$ValueCol <- NA
for (i in 1:length(df$DateCol)) {
  if (df$DateCol[i] %in% df2) {
    df$ValueCol[i] <- 1
  } else {
    df$ValueCol[i] <- 0
  }
}
库(TIBLE)
图书馆(lubridate)

df或者您可以尝试使用dplyr

library(dplyr)
library(magrittr)
df <- tibble(DateCol = seq(ymd("2021-01-01"),ymd("2021-05-31"),"days"))

df2 <- ymd("2021-02-04","2021-02-07","2021-02-17","2021-02-25")
df3 <- df %>% mutate(ValueCol = if_else(DateCol %in% df2, 1, 0))

库(dplyr)
图书馆(magrittr)
df
library(dplyr)
library(magrittr)
df <- tibble(DateCol = seq(ymd("2021-01-01"),ymd("2021-05-31"),"days"))

df2 <- ymd("2021-02-04","2021-02-07","2021-02-17","2021-02-25")
df3 <- df %>% mutate(ValueCol = if_else(DateCol %in% df2, 1, 0))