我正在尝试在R中为某些数据范围的月度保费创建虚拟变量,例如,对于2009年至2011年为1,对于2017年至2019年为1的虚拟。这就是我正在使用的数据,而且我对R还是很陌生,所以任何全面的回答都将不胜感激。
答案 0 :(得分:0)
dplyr中mutate
和case_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"
)
)