2014-01-31 7 views
0

Вот мой код:Невозможно преобразовать строку даты

STUDYID COUNTRY SITEID SUBJID SCRNDT RANDDT SCRNFDT TLSAMP SCRNSAMP 
GRTMD101  USA  13 130101 4-Dec-12   7-Dec-12 600  1224 
GRTMD101  USA  13 130102 4-Dec-12   26-Dec-12 600  1224 
GRTMD101  USA  13 130103 4-Dec-12   18-Dec-12 600  1224 
GRTMD101  USA  6 60101 5-Dec-12 18-Dec-12    600  1224 
GRTMD101  USA  5 50101 5-Dec-12   11-Dec-12 600  1224 
GRTMD101  USA  13 130104 6-Dec-12 26-Dec-12    600  1224 

a<-read above dataset, sorry I don't know how to post this 
subvars<-c("STUDYID","SITEID","SUBJID", "RANDDT") 
b<-subset(a[subvars],a$RANDDT!="") 
c<-as.Date(b$RANDDT,format="%d-%b-%y") 

Однако, R просто продолжает давать мне все NAs в c, ничто не может быть преобразован.

Я не знаю, почему эта простая задача не может быть выполнена.

У вас есть идеи?

+3

размещать свои данные, используйте 'dput (а)', я предполагаю, что вы получаете 'NA', потому что ваша колонка дата является' фактор '(проверьте это с помощью' str (a) '). Добавьте «stringsAsFactors = FALSE» к шагу, когда вы читаете данные. – Justin

ответ

0

Вот способ, чтобы преобразовать RANDDT переменную:

library(lubridate) 

a = structure(list(STUDYID = c("GRTMD101", "GRTMD101", "GRTMD101", 
"GRTMD101", "GRTMD101", "GRTMD101"), COUNTRY = c("USA", "USA", 
"USA", "USA", "USA", "USA"), SITEID = c(13L, 13L, 13L, 6L, 5L, 
13L), SUBJID = c(130101L, 130102L, 130103L, 60101L, 50101L, 130104L 
), SCRNDT = c("4-Dec-12", "4-Dec-12", "4-Dec-12", "5-Dec-12", 
"5-Dec-12", "6-Dec-12"), RANDDT = c("", "", "", "18-Dec-12", 
"", "26-Dec-12"), SCRNFDT = c("7-Dec-12", "26-Dec-12", "18-Dec-12", 
"", "11-Dec-12", ""), TLSAMP = c(600L, 600L, 600L, 600L, 600L, 
600L), SCRNSAMP = c(1224L, 1224L, 1224L, 1224L, 1224L, 1224L)), .Names = c("STUDYID", 
"COUNTRY", "SITEID", "SUBJID", "SCRNDT", "RANDDT", "SCRNFDT", 
"TLSAMP", "SCRNSAMP"), class = "data.frame", row.names = c(NA, 
-6L)) 


b = a[ a$RANDDT != '', c(1,3,4,6)] 

b$RANDDT = dmy(b$RANDDT) 
b 
+0

Я попробовал ваш код, R вернул, что «Все форматы не разобрались. Форматы не найдены». – Weijia

+0

Это будет означать, что ваши даты указаны в формате «день-месяц». В 'lubridate' есть разные комбинации, например. dmy, mdy, ymd и т. д. Вы можете добавить свой собственный список или включить список разных форматов, используя 'parse_date_time()'. В этом файле справки есть много хороших примеров. – John

+0

Спасибо, я посмотрю на это. Большое спасибо – Weijia

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