我有一个数据表“日期”,例如:
dates <- data.frame(date1=c("2015","1998","2000","1991"),
date2=c("98","00","18","92"))
dates <- mutate_if(dates,is.factor,as.character)
“日期”中的值属于-char类
我要使“ date2”为4位数字。为此,我希望满足以下条件:
我已经做了很多研究,但是我找不到如何使用条件
将字符串添加到已经存在的字符串中的方法事后思考:我们如何处理“ NA”值,这样它就不会为“ NA´s”分配“ 19”或“ 20”
答案 0 :(得分:1)
无正则表达式的替代项:
d2int <- as.integer(dates$date2)
dates[["date2n"]] <- as.character(d2int + ifelse(d2int > 18, 1900, 2000))
dates
date1 date2 date2n
1 2015 98 1998
2 1998 00 2000
3 2000 18 2018
4 1991 92 1992
5 2015 89 1989
6 1998 18 2018
7 2000 19 1919
8 1991 NA <NA>
位置:
dates <- data.frame(
date1=c("2015","1998","2000","1991"),
date2=c("98","00","18","92", "89", "18", "19", "NA"),
stringsAsFactors = FALSE
)
答案 1 :(得分:0)
您可以使用lubridate
并尝试类似的操作:
输入:
dates <- data.frame(date1=c("2015","1998","2000","1991", "1991", "1991"),
date2=c("98","00","18","92", "88", NA))
使用:
dates %>%
mutate(date2 = as.integer(date2)) %>%
mutate(date3 = if_else(date2+2000 > year(today()), date2+1900, date2+2000))
给出:
date1 date2 date3
1 2015 98 1998
2 1998 0 2000
3 2000 18 2018
4 1991 92 1992
5 1991 88 1988
6 1991 NA NA
p.s。在输入数据中添加了两行,以显示其如何处理NA
值