df <- data.frame(ID=1:3, release_date=c('01/01/2020','22/06/2020','2019'))
如果我像这样拆分列:
df2 <- separate(data = df, col = release_date, into = c("day", "month", "year"))
我得到了这个:
如何使年份显示在正确的列中?有什么想法吗
lskq00tm1#
你想使用fill参数:
fill
df <- data.frame(ID=1:3, release_date=c('01/01/2020','22/06/2020','2019')) df |> tidyr::separate( col = release_date, into = c("day", "month", "year"), fill = "left" ) -> df2
结果:
ID day month year 1 1 01 01 2020 2 2 22 06 2020 3 3 <NA> <NA> 2019
cld4siwp2#
假设,“日期部分缺失”意味着只给出了年份,在基数R中,我们可以做
s <- strsplit(df$release_date, '/') u <- lengths(s) == 1 s[u] <- lapply(s[u], \(x) c(rep.int(NA_integer_, 2), x)) cbind(df[1], `colnames<-`(do.call('rbind', s), c("day", "month", "year"))) # ID day month year # 1 1 01 01 2020 # 2 2 22 06 2020 # 3 3 <NA> <NA> 2019 # 4 4 <NA> <NA> 2019
如果您希望使用与OP不同的数字格式,则可以将结果通过管道传输到
|> type.convert(as.is=TRUE)
df <- structure(list(ID = 1:4, release_date = c("01/01/2020", "22/06/2020", "2019", "2019")), class = "data.frame", row.names = c("1", "2", "3", "4"))
2条答案
按热度按时间lskq00tm1#
你想使用
fill
参数:结果:
cld4siwp2#
假设,“日期部分缺失”意味着只给出了年份,在基数R中,我们可以做
如果您希望使用与OP不同的数字格式,则可以将结果通过管道传输到