2013-09-26 2 views
0

Следуя предыдущим вопросам, я хочу вручную изменить даты при форматировании в неправильном формате. Используя в качестве примера dataframe:Вручную редактировать ячейки в столбце dataframe со ссылкой на строку

ID <- c(101,102,103,104,105,106,107) 
dob <- c("20/04/2001","29/10/2000","September 1 2012","15/11/00","20.01.1999","April 20th 1999", "04/08/01") 
df <- data.frame(ID, dob) 

Определив, которые даты в неправильном формате (выделив Nas, когда есть даты в заблуждении), я тогда хочу вручную изменить столбец DOB.

Как это сделать: a. Для обеспечения того, чтобы результирующие даты были признаны R. b. Ссылка на столбец идентификатора, а не на относительное положение ячейки (например, не на столбец, номер строки).

Например: ID 103 становится 01/09/2012 ID 105 становится 20/01/1999 ID 106 становится 01/04/1999

Большое спасибо заранее.

ответ

0

Во-первых, если переменная является factor (как это имеет место в вашем примере), вы должны преобразовать его в character первый:

df$dob <- as.character(df$dob) 

Затем, вы не должны изменять ваши данные по номеру строки, но выбрав значение, которое нужно изменить. Что-то вроде этого:

df$dob[df$dob=="September 1 2012"] <- "01/09/2012" 
df$dob[df$dob=="April 20th 1999"] <- "20/04/1999" 

Альтернативный синтаксис использовать within:

df <- within(df, { 
    dob <- as.character(dob) 
    dob[dob=="September 1 2012"] <- "01/09/2012" 
    dob[dob=="April 20th 1999"] <- "20/04/1999" 
})  

После даты все в точно таком же формате, вы должны преобразовать их в один из классов даты из базы R или из пакета. Посмотрите, например, на справочную страницу strptime.

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