首页 > 解决方案 > 仅使用 R 基函数将一列一分为二

问题描述

我得到了这个df:

df = data.frame(
                date = c(01/01/2020, 01/02/2020, 01/03/2020), 
                day = c("Rain31", "Rain12", "Rain04")
)

        date    day 
1 01/01/2020 Rain31 
2 01/02/2020 Rain12 
3 01/03/2020 Rain04 

我想达到这个:

        date    day   true.day
1 01/01/2020 Rain31 31/01/2020
2 01/02/2020 Rain12 12/02/2020
3 01/03/2020 Rain04 01/03/2020

我可以用分开()和联合()做到这一点

但现在,我可以只使用基本功能:(

我做了什么:(对决议不重要)

  df %>%
    separate(day,  into = c("rain", "nday"), sep = 4  ) %>%
    separate(date, into = c("day", "month_year"), sep = 3) %>%
    unite(DataPrecMax, nday, month_year, sep = "")

标签: r

解决方案


您可以从列中删除非数字day并替换前 2 个字符date

df$true.date <- df$date
substring(df$true.date, 1, 2) <- sub('\\D+', '', df$day)
df
#        date    day  true.date
#1 01/01/2020 Rain31 31/01/2020
#2 01/02/2020 Rain12 12/02/2020
#3 01/03/2020 Rain04 04/03/2020

数据

df = data.frame(
  date = c("01/01/2020", "01/02/2020", "01/03/2020"), 
  day = c("Rain31", "Rain12", "Rain04"), stringsAsFactors = FALSE)

推荐阅读