【发布时间】:2018-03-24 05:38:17
【问题描述】:
x <- structure(list(SU_BIRTH_DATE = structure(c(47482, 2884, 11347,
10449, -1280, 2324), class = "Date")), row.names = c(NA, 6L), class = "data.frame", .Names = "SU_BIRTH_DATE")
x
SU_BIRTH_DATE
1 2100-01-01
2 1977-11-24
3 2001-01-25
4 1998-08-11
5 1966-07-01
6 1976-05-13
从查看数据集可以清楚地看出,许多人在出生日期时使用了拼写错误,他们在年份部分输入了 2100 而不是 2001。
我想用 2001 替换日期字段的任何 2100 年部分。
我该怎么做?
x <- x %>%
mutate(SU_BIRTH_DATE = if_else(year(SU_BIRTH_DATE) == 2100, year(SU_BIRTH_DATE) = 2001,SU_BIRTH_DATE))
错误:意外的“=”在: "x % 变异(SU_BIRTH_DATE = if_else(年(SU_BIRTH_DATE)== 2100,年(SU_BIRTH_DATE)=“
编辑 转换为字符并使用 str_replace 然后转换回日期是一种同时有效的解决方案,但我确信有一种更智能、代码更少的方法来做到这一点?
x <- x %>% mutate(SU_BIRTH_DATE = str_replace_all(as.character(SU_BIRTH_DATE), "2100", "2001"),
SU_BIRTH_DATE = ymd(SU_BIRTH_DATE))
【问题讨论】:
-
您的问题是
if_else(以及ifelse)需要true(或yes)参数才能真正成为某种东西。year<-不返回任何内容,并且将其括在括号中也无法将您保存在这里,因为它只会返回2001。