R使用separate拆分列报错,如何将20190901拆分为年、月、日三列?
separate报错原因及修复方案
- 报错原因:
tidyr::separate()要求第一个输入参数为数据框对象,你代码中传入的df$ALISVERIS_TARIHI是单独提取的字符列向量,类型不匹配触发报错。 - 修复后代码:
df <- separate(df, col = ALISVERIS_TARIHI, into = c("key","value"), sep = " ", extra = "merge")
注意:
extra参数的参数值需要加引号,标识为字符串类型参数。
8位日期字符串拆分方案
对于"20190901"这类固定长度的YYYYMMDD格式日期,有两种常用拆分方式:
方式1:使用separate按位置拆分
直接指定拆分的位置下标即可,第4位后拆分出年份,第6位后拆分出月份,剩余为日期:
# 假设你的日期列名为date_col,拆分后列名为year、month、day df <- separate(df, col = date_col, into = c("year","month","day"), sep = c(4,6))
方式2:使用字符串截取实现
如果不想依赖tidyr包,可以用base R的字符串截取函数实现:
df$year <- substr(df$date_col, 1, 4) df$month <- substr(df$date_col, 5, 6) df$day <- substr(df$date_col, 7, 8)
内容的提问来源于stack exchange,提问作者GÖKHAN GÜLER
相关产品推荐
相关产品推荐

