用空格分隔符拆分R中的列

时间:2016-02-21 20:12:19

标签: r

我有以下格式的数据集 {r} Name Start End Abc 01/05/2015 00:00 01/06/2015 00:00 bbb 05/04/2015 00:00 05/05/2015 00:00

我想按以下格式转换此数据框

{r} Name Start End Month Abc 01/05/2015 01/06/2015 January bbb 05/04/2015 05/05/2015 May

基本上,我想基于空格分隔符拆分列,然后将每个日期转换为月份。

我的数据框的名称是ba。最初,日期列是一个因素,我将其转换为一个字符。我尝试使用strsplit()。 {r} ba$time <- strsplit(ba$Start," ") 我得到这个输出c(“01/05/2016”,“00:00”)

有人可以帮我解决这个问题吗。

1 个答案:

答案 0 :(得分:1)

我们使用lapply遍历第2和第3列('开始','结束'),匹配一个或多个空格(\\s+),后跟字符,直到字符串结尾并替换它与''一起,将输出分配回来。通过将“开始”转换为Date类来创建“月”列,使用format提取月份。

ba[2:3] <- lapply(ba[2:3], sub, pattern="\\s+.*", replacement="")
ba$Month <- format(as.Date(ba$Start, format='%m/%d/%Y'), '%B')
ba
#  Name      Start        End     Month
#1  Abc 01/05/2015 01/06/2015   January
#2  bbb 05/04/2015 05/05/2015       May