4

这是我关于stackoverflow的第一个问题,我是一名新手R程序员。我有一个数据框,其中有一列“年”的值从 1985 年到 2012 年。这些默认情况下作为我的 csv 文件中的一个因素导入(这可能是我的第一个问题)。我想为日期大于 2008 年的所有行创建一个新向量“Modern”,其值为 1。换句话说,我想用“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 来避免这种情况?

先感谢您。

4

1 回答 1

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"

于 2013-11-11T20:10:13.430 回答