在R中为特定日期范围创建虚拟变量

时间:2020-10-05 01:07:05

标签: r dummy-variable

我正在尝试在R中为某些数据范围的月度保费创建虚拟变量,例如,对于2009年至2011年为1,对于2017年至2019年为1的虚拟。这就是我正在使用的数据,而且我对R还是很陌生,所以任何全面的回答都将不胜感激。

pic of data

1 个答案:

答案 0 :(得分:0)

dplyr中mutatecase_when的组合将使您可以使用逻辑语句来定义虚拟变量。

mutate创建新列或覆盖现有列。

case_when依次检查每个逻辑语句,并将您提供的值应用于匹配的案例。

我使用数据框的行创建一个日期列。然后使用逻辑语句来定义带有标签的年龄范围。

为使事情保持整洁,在末尾添加“ OTHER”之类的TRUE将捕获任何不符合条件的结果。

我的示例使用数据集randu,我添加了一些随机日期作为行名,以提供与您的图片相似的图片。

row.names(table) <- sample(seq(as.Date('2009/01/01'), as.Date('2019/12/31'), by="week"), 400)
table$date <- format(as.Date(row.names(table)), "%Y")

table <- table %>% mutate(
    
    date = case_when(
        
        date >= 2009 & date <= 2011
        ~ "2009-2011",
        
        date >= 2017 & date <= 2019
        ~ "2017-2019",
        
        TRUE ~ "OTHER"
    )
)