基于 R 中的其他列创建列

Creating a column based on other columns in R

我是 R 的新手,但我想根据其他 2 列(日期列)在我的数据框中创建一个新列。我有一个编码为 (1, 2, 3) 和 2 个日期列的分组变量。 以下是我的新专栏的条件:

我尝试了 case_when 和 if_else 但没有成功。如有任何帮助,我们将不胜感激。

我尝试了 case-when 和 if_else 但出现了错误

这是 case_when 的方法。

set.seed(2022)

d <- seq(as.Date("2022-01-01"), Sys.Date(), by = "day")
df1 <- data.frame(
  group = sample(3, 20, TRUE),
  date1 = sample(d, 20),
  date2 = sample(d, 20)
)

suppressPackageStartupMessages(library(dplyr))

df1 %>%
  mutate(newdate = case_when(
    group == 1 ~ date1,
    group == 2 ~ date2,
    TRUE ~ pmin(date1, date2)
  )) %>% head
#>   group      date1      date2    newdate
#> 1     3 2022-01-29 2022-02-25 2022-01-29
#> 2     2 2022-01-12 2022-01-01 2022-01-01
#> 3     3 2022-03-20 2022-01-19 2022-01-19
#> 4     3 2022-03-01 2022-03-01 2022-03-01
#> 5     2 2022-02-13 2022-02-19 2022-02-19
#> 6     3 2022-03-11 2022-02-10 2022-02-10

reprex package (v2.0.1)

于 2022-03-24 创建

我不是 100% 确定在组变量为 3 的情况下这是否是您想要的,但它会比较早的日期增加一天。


df <- data.frame(group = c(1:3),
                 date1 = c(01-02-99, 01-02-99,1-02-99),
                 date2 = c(04-02-99, 04-02-99,04-02-99)
                 )

df$date1 <- as.Date(df$date1)
df$date2 <- as.Date(df$date2)


df <- df %>% mutate(col3 = case_when(
    group == 1 ~ date1,
    group == 2 ~ date2,
    group == 3 & date1 > date2 ~ date2+1,
    group == 3 & date2 > date1 ~ date1+1
))