我有一个包含V8列的数据框,该列由此格式的字符串值组成 -
as.Date
这些项目是日期,第一个代表2016年7月份,第二个代表2011年2月,最后一个代表2012年5月。有时会有初始零,有时则没有。
我想使用strptime
方法在R中表示这些日期,但我知道这种表示是非标准和模糊的。
我打算以编程方式将CSV文件中的值转换为strptime("09/12", format="%m/%y")
可以理解的表示形式,但令我印象深刻的是,这必然是一个常见问题,因此可能会涉及到更多惯用解决方案。我找到了NA
函数,但我不清楚如何使用它,尝试foreach (var item in class1.ItemSource)
{
Console.WriteLine(((TempClass)item).A);
}
但它返回public class TempClass
{
int a;
public int A
{
set { a = value; }
get { return a; }
}
public TempClass() { }
public TempClass(int t) { A = t; }
public override string ToString()
{
return A.ToString();
}
}
。
如何将这些非标准字符串值转换为Date对象?
答案 0 :(得分:3)
一种选择是使用as.Date()
并假设您的每个月都发生在该月的第一天:
> strDates <- c("07/16", "02/11", "05/12")
> dates <- as.Date(paste0("01/", strDates), "%d/%m/%y")
> dates
[1] "2016-07-01" "2011-02-01" "2012-05-01"
答案 1 :(得分:3)
一个可能的解决方法是使用zoo包中的as.yearmon()
。
> as.yearmon("09/12", format ="%m/%y")
[1] "Sep 2012"
唯一的缺点是你没有获得“Date”对象,而是得到一个“yearmon”对象。
答案 2 :(得分:1)
lubridate
包可能对此有用:
library(lubridate)
strDates <- c("07/16", "02/11", "05/12")
as.Date(parse_date_time(strDates, orders="%m/%y"))
[1] "2016-07-01" "2011-02-01" "2012-05-01"