2014-09-04 20 views
0

我有一個POSIXct類向量包含am小時,我想要替換包含字符類列的數據框中的值。當我進行替換時,班級變爲人物。我正在繼續如下:從向量中分配行時類更改。 R 3.10,Windows 7,64位

class(data2014.im.t[,2]) 
[1] "character" 
class(horas.am) 
[1] "POSIXct" "POSIXt" 
head(horas.am) 
[1] "1970-01-01 09:00:00 COT" "1970-01-01 10:00:00 COT" "1970-01-01 11:00:00 COT" "1970-01-01 12:00:00 COT" 
[5] "1970-01-01 01:00:00 COT" "1970-01-01 02:00:00 COT" 
data2014.im.t[grep("([a])", data2014.im.t[,2]), 2] <- horas.am 
class(data2014.im.t[,2]) 
[1] "character" 
head(data2014.im.t[,2]) 
[1] "50400" "54000" "57600" "104400" "64800" "68400" 

很明顯,我想有一個包含小時的POSIXct列。有什麼想法嗎?

+1

你不顯示的'data2014.im.t [,2]'的內容。 – 2014-09-04 01:06:54

回答

0

你應該明確地做轉換自己

#sample data 
horas.am <- seq(as.POSIXct("2014-01-01 05:00:00"), length.out=10, by="2 hours") 
data2014.im.t <- data.frame(a=1:10, b=rep("a",10), stringsAsFactors=FALSE) 

class(data2014.im.t[,2]) 
# [1] "character" 
class(horas.am) 
# [1] "POSIXct" "POSIXt" 

# NO: 
data2014.im.t[grep("([a])", data2014.im.t[,2]), 2] <- horas.am 
# YES 
data2014.im.t[grep("([a])", data2014.im.t[,2]), 2] <- as.character(horas.am) 

data2014.im.t 

#  a     b 
# 1 1 2014-01-01 05:00:00 
# 2 2 2014-01-01 07:00:00 
# 3 3 2014-01-01 09:00:00 
# 4 4 2014-01-01 11:00:00 
# 5 5 2014-01-01 13:00:00 
# 6 6 2014-01-01 15:00:00 
# 7 7 2014-01-01 17:00:00 
# 8 8 2014-01-01 19:00:00 
# 9 9 2014-01-01 21:00:00 
# 10 10 2014-01-01 23:00:00 

class(data2014.im.t[,2]) 
# [1] "character"