在R中的数据框中查找日期
我尝试使用日期列表在数据框中查找相同的日期,并使用ifelse循环添加一个新列。代码如下:在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"
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))