这是我关于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来避免这种情况吗?
提前谢谢。
答案 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"