首页 > 解决方案 > 基于另一列年份创建新列

问题描述

我正在尝试根据另一列在我的 data.frame 中创建一个新列。

我的数据框称为 dat.cp2,其中的一列有 1990-2017 年的某一年,您可以在此处查看我的数据的外观。“ar”列表示一年。

在此处输入图像描述

我需要用句点创建一个名为“TB”的新列。例如,第一个时期是 1990-1996,我希望那个时期被称为“TB1”.. 1997-2003 是“TB2”等等。因此,对于 1995 年出生的人来说,新列显示为“TB1”。

我试过了:

dat.cp2 %>% mutate(TB =
                     case_when(ar <=1996 ~ "TB1",
                               ar >=1997&<=2003 ~ "TB2",
                               ar >=2004&<=2010 ~ "TB3",
                               ar >=2011 ~ "TB4")

但我收到错误消息:

Error: unexpected '<=' in:
"                     case_when(ar <=1996 ~ "TB1",
                               ar >=1997&<="

我试过寻找答案,但找不到任何答案。有人可以帮忙吗?

标签: rdplyrcase-when

解决方案


您实际上并不需要,&因为您是按顺序工作的,您也可以使用以下方式完成TRUE

dat.cp2 %>% 
  mutate(
    TB = case_when(ar <= 1996 ~ 'TB1',
                   ar <= 2003 ~ 'TB2',
                   ar <= 2010 ~ 'TB3',
                   TRUE ~ 'TB4')
  )

推荐阅读