2017-04-04 35 views
0

我的数据帧是:转换系数为日期列

x=structure(list(V1 = structure(c(33L, 35L, 36L, 37L, 39L, 4L, 
6L, 7L, 8L, 10L, 14L, 16L, 18L, 19L, 21L, 25L, 27L, 28L, 29L, 
30L, 1L, 17L, 31L, 32L, 34L, 38L, 40L, 2L, 3L, 5L, 9L, 11L, 12L, 
13L, 15L, 20L, 22L, 23L, 24L, 26L), .Label = c("1-Feb-71", "10-Feb-71", 
"11-Feb-71", "11-Jan-71", "12-Feb-71", "12-Jan-71", "13-Jan-71", 
"14-Jan-71", "15-Feb-71", "15-Jan-71", "16-Feb-71", "17-Feb-71", 
"18-Feb-71", "18-Jan-71", "19-Feb-71", "19-Jan-71", "2-Feb-71", 
"20-Jan-71", "21-Jan-71", "22-Feb-71", "22-Jan-71", "23-Feb-71", 
"24-Feb-71", "25-Feb-71", "25-Jan-71", "26-Feb-71", "26-Jan-71", 
"27-Jan-71", "28-Jan-71", "29-Jan-71", "3-Feb-71", "4-Feb-71", 
"4-Jan-71", "5-Feb-71", "5-Jan-71", "6-Jan-71", "7-Jan-71", "8-Feb-71", 
"8-Jan-71", "9-Feb-71"), class = "factor"), V2 = structure(c(1L, 
15L, 2L, 4L, 3L, 5L, 10L, 5L, 7L, 12L, 8L, 16L, 16L, 22L, 16L, 
19L, 22L, 12L, 17L, 23L, 24L, 24L, 21L, 17L, 19L, 16L, 6L, 11L, 
9L, 25L, 25L, 8L, 5L, 13L, 20L, 18L, 16L, 13L, 12L, 14L), .Label = c("7.1359", 
"7.1367", "7.1382", "7.1386", "7.1390", "7.1397", "7.1403", "7.1406", 
"7.1410", "7.1411", "7.1412", "7.1414", "7.1418", "7.1420", "7.1422", 
"7.1429", "7.1431", "7.1434", "7.1435", "7.1437", "7.1439", "7.1443", 
"7.1445", "7.1465", "ND"), class = "factor")), .Names = c("V1", 
"V2"), class = "data.frame", row.names = c(NA, -40L)) 

我想列V1转换为日期,但它不工作。我一直在看一些话题,但它不起作用。

这是我的代码:

x$V1 <- as.Date(x$V1, format="%d-%b-%y") 

它为V1列的某些行,但不是为别人。

任何帮助?

+0

哪些行正在返回NA? – xraynaud

回答

2

在我的R版本中,示例中的转换仅适用于1月份,而不适用于2月份。我认为这与语言有关。 例如,在法语中,2月被编码为fév,所以2月份不被识别。 一旦我这样做:

x$V1=gsub("Feb", "fév", x$V1) 

它的工作。 这可能取决于您的R版本使用哪种语言。

+0

而不是更改数据,您可以更改R语言环境:'loc < - Sys.getlocale(“LC_TIME”)'保存您的语言环境,'Sys.setlocale(“LC_TIME”,“C”)'切换到C语言环境,'x $ V1 < - as.Date(x $ V1,format =“%d-%b-%y”)''和'Sys.getlocale(loc)'。 – xraynaud

+0

复杂。我改变了我的语言和工作。现在我将改变所有月份,看看它是否有效。谢谢!! –

+0

@xraynaud感谢您的建议!你不应该在最后恢复Sys.setlocale(“LC_TIME”,loc)吗?对于OP:如果您需要更改很多数据,则更改语言环境以进行分析可能更有意义,然后恢复到xraynaud评论中提到的原始状态。 – Lamia