从向量分配行时类更改。 R 3.10,Windows 7,64bit

时间:2014-09-04 00:39:58

标签: r replace posixct

我有一个包含am hours的POSIXct类向量,我想替换包含字符类列的数据框中的值。当我进行替换时,类会更改为字符。我正在进行如下操作:

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 个答案:

答案 0 :(得分: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"