【发布时间】:2019-03-06 03:49:45
【问题描述】:
library(data.table)
# Target string to convert
DATE_DATA <- c("2015-01-02;2015-01-07;2021-05-02;2019-02-05",
"2017-08-02;2000-01-22;2003-03-07;2017-10-09",
"2013-08-02;2022-06-02;2012-03-15")
# Dataset
DT <- data.table(NAME = c("JOE","MARY","PAUL"),DATE = c(DATE_DATA))
预期结果 - 将 DATE 列转换为新列调用“期间”,如下所示: 拆分 + 降序排序 = F + 唯一年份
# period
1: 2015,2019,2021
2: 2000,2003,2017
3: 2012,2013,2022
像下面这样的方法我没有遇到例外结果
# 1st approach -- RESULT : created column with class -- "list"
DT[,period:= lapply(strsplit(DT$DATE,";"),
function(x) sort(unique(str_sub(x,1,4)),
decreasing = FALSE))]
# 2nd approach -- RESULT : created column with class -- "character" but value
# turn to "c("xxx", "xxx", "xxx")" , not expected
# "xxx,xxx,xxx"
DT[,period:= as.character(paste(lapply(strsplit(DT$DATE,";"),
function(x) sort(unique(str_sub(x,1,4)),
decreasing = FALSE)),collapse = ","))]
我错过了哪一步?提前致谢
【问题讨论】:
标签: r list sorting split data.table