我有以下格式的数据集
{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”)
有人可以帮我解决这个问题吗。
答案 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