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

use*_*491 4 r date

这是我关于 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 来避免这种情况吗?

先感谢您。

sck*_*ott 5

?read.table,你可以传递一个参数,stringsAsFactors=FALSE这样你就不会转换为因子。

as.numeric在因子类上使用不起作用,但您可以这样做as.numeric(as.character(as.factor("2006"))),这为您提供了 2006.

对于日期,一种解决方案是替换2006like as.Date(paste0(2006, '-01-01')),它为您提供"2006-01-01"