我有以下示例数据:
original_date first_payment_date LTV DTI FICO
01/2007 03/2007 56 37 734
01/2007 04/2007 80 11 762
01/2006 02/2007 80 28 656
我想从original_date中提取月份部分,但是当我使用months
函数时,它会抛出一个错误,因为它正在查找类似'01 / 01/2007'的值。是否有可能获得月份而不将值转换为'01 / 01/2007'?
答案 0 :(得分:1)
您可以使用separate
中的tidyr
功能将日期分为月份和年份列。然后,您可以使用mutate_each
来获取monts的缩写而不是数字。使用month.abb
获取缩写,或使用month.name
获取全名。
require(tidyr)
require(dplyr)
df %>%
separate(original_date, c("original_month", "original_year"), sep = "/", convert = TRUE) %>%
separate(first_payment_date, c("first_payment_month", "first_payment_year"), sep = "/", convert = TRUE) %>%
mutate_each(funs(month.abb[.]), contains("_month"))
## original_month original_year first_payment_month first_payment_year LTV DTI FICO
## 1 Jan 2007 Mar 2007 56 37 734
## 2 Jan 2007 Apr 2007 80 11 762
## 3 Jan 2006 Feb 2007 80 28 656
我使用的数据:
df <- data.frame(original_date = c("01/2007", "01/2007", "01/2006"),
first_payment_date = c("03/2007", "04/2007", "02/2007"),
LTV = c(56L, 80L, 80L),
DTI = c(37L, 11L, 28L),
FICO = c(734L, 762L, 656L),
stringsAsFactors = FALSE)
答案 1 :(得分:0)
假设你在original_date中的前两个字符是你的月份。这应该只返回你的月份部分。
select LEFT(original_date,2) as original_date_month
from yourtable