如何最好地处理R中的年级值

时间:2013-11-11 20:01:59

标签: r date

这是我关于stackoverflow的第一个问题,我是新手R程序员。 我有一个数据框,其中列“年”具有从1985年到2012年的值。默认情况下,这些是从我的csv文件导入的(这可能是我的第一个问题)。我想创建一个新的矢量“Modern”,其值为1,对于日期大于2008的所有行。换句话说,我想用“1”表示来自2009-2012的所有数据。

这是我目前的解决方案:

yearnum<-as.Date(year,format="%Y")
Modern<-ifelse(yearnum>"2008-12-30",1,0)

它有效,但我有一些问题。 1.我尝试使用as.numeric函数,但不是像2006年那样给我一个值,而是从1开始重新编号。为什么会这样? 2.因为我最终使用了as.Date功能,所以R默认了今天的月和日。我可以通过保留一年,或者至少记录1/1 / yyyy来避免这种情况吗?

提前谢谢。

1 个答案:

答案 0 :(得分:4)

请参阅?read.table,您可以传递参数stringsAsFactors=FALSE,这样您就无法转换为因素。

在因子类上使用as.numeric不起作用,但您可以执行as.numeric(as.character(as.factor("2006"))),这将为您提供2006年。

对于日期,一个解决方案正在替换2006,例如as.Date(paste0(2006, '-01-01')),这会为您提供"2006-01-01"