2013-11-11 2 views
3

Это мой первый вопрос о stackoverflow, и я новичок R-программист. У меня есть dataframe, где есть столбец «год», который имеет значения с 1985 по 2012 год. Они импортируются по умолчанию в качестве фактора из моего файла csv (что может быть моей первой проблемой). Я хочу создать новый вектор «Современный», который имеет значение 1 для всех строк, где дата больше 2008 года. Другой способ: я хочу указать с «1» все данные с 2009-2012 года.Как лучше всего использовать значения только для года в R

Вот мое текущее решение:

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?

Заранее спасибо.

ответ

3

См. ?read.table, вы можете передать аргумент stringsAsFactors=FALSE, чтобы вы не получали преобразование в факторы.

Использование as.numeric на классе фактор не работает, но вы можете сделать as.numeric(as.character(as.factor("2006"))), что дает 2006

Для дат, одно решение заменяет 2006 как as.Date(paste0(2006, '-01-01')), который дает "2006-01-01"

Смежные вопросы