根据另一列有年份的时间段制作新列
Make new column with periods based on another column with years
我正在尝试根据另一列在我的 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&<="
我已经尝试寻找答案,但找不到任何答案.. 任何人都可以帮忙吗?
语法 &<=
在某些其他语言中可能是可以接受的,但在 R
中,语法在由 &
[=15 连接的两个表达式中应该具有 ar
=]
library(dplyr)
dat.cp2 %>%
mutate(TB =
case_when(ar <=1996 ~ "TB1",
ar >=1997 & ar <=2003 ~ "TB2",
ar >=2004 & ar <=2010 ~ "TB3",
ar >=2011 ~ "TB4"))
注意:有很多方法可以简化。但是,这只是为了说明 OP 的代码错误在哪里
您还可以这样做:
dat.cp2 %>%
mutate(TB = cut(ar, breaks = c(1989,1996, 2003, 2010, 2017),
labels = c("TB1", "TB2","TB3","TB4")))
你实际上并不需要 &
因为你是按顺序工作的,你也可以用 TRUE
:
来完成
dat.cp2 %>%
mutate(
TB = case_when(ar <= 1996 ~ 'TB1',
ar <= 2003 ~ 'TB2',
ar <= 2010 ~ 'TB3',
TRUE ~ 'TB4')
)
我正在尝试根据另一列在我的 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&<="
我已经尝试寻找答案,但找不到任何答案.. 任何人都可以帮忙吗?
语法 &<=
在某些其他语言中可能是可以接受的,但在 R
中,语法在由 &
[=15 连接的两个表达式中应该具有 ar
=]
library(dplyr)
dat.cp2 %>%
mutate(TB =
case_when(ar <=1996 ~ "TB1",
ar >=1997 & ar <=2003 ~ "TB2",
ar >=2004 & ar <=2010 ~ "TB3",
ar >=2011 ~ "TB4"))
注意:有很多方法可以简化。但是,这只是为了说明 OP 的代码错误在哪里
您还可以这样做:
dat.cp2 %>%
mutate(TB = cut(ar, breaks = c(1989,1996, 2003, 2010, 2017),
labels = c("TB1", "TB2","TB3","TB4")))
你实际上并不需要 &
因为你是按顺序工作的,你也可以用 TRUE
:
dat.cp2 %>%
mutate(
TB = case_when(ar <= 1996 ~ 'TB1',
ar <= 2003 ~ 'TB2',
ar <= 2010 ~ 'TB3',
TRUE ~ 'TB4')
)