这是我关于 stackoverflow 的第一个问题,我是 R 新手程序员。我有一个数据框,其中“年份”列的值从 1985 年到 2012 年。默认情况下,这些值是从我的 csv 文件(这可能是我的第一个问题)中作为一个因素导入的。我想为日期大于 2008 年的所有行创建一个新的向量“现代”,其值为 1。换句话说,我想用“1”表示 2009-2012 年的所有数据。
这是我目前的解决方案:
yearnum<-as.Date(year,format="%Y")
Modern<-ifelse(yearnum>"2008-12-30",1,0)
Run Code Online (Sandbox Code Playgroud)
它有效,但我有一些问题。1. 我尝试使用该as.numeric
函数,但不是给我一个像 2006 这样的值,而是从 1 开始按年份重新编号。这是为什么?2.因为我最终使用了该as.Date
函数,所以R将月份和日期默认为今天的月份和日期。我可以通过只保留年份或至少记录 1/1/yyyy 来避免这种情况吗?
先感谢您。
看?read.table
,你可以传递一个参数,stringsAsFactors=FALSE
这样你就不会转换为因子。
as.numeric
在因子类上使用不起作用,但您可以这样做as.numeric(as.character(as.factor("2006")))
,这为您提供了 2006.
对于日期,一种解决方案是替换2006
like as.Date(paste0(2006, '-01-01'))
,它为您提供"2006-01-01"