R分离整数向量

时间:2016-04-21 13:26:31

标签: r vector split

我有一个向量,其中包含存储为像这样的因子整数的日期和时间

“20151201 070104”

我需要在空间分开它。我试过了:

dtsplit = as.numeric(strsplit(dtimes, " "))

但这不起作用,因为它不是char格式。

我最好怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用已发现的strspit分割您的dtimes。因为您的字符串现在是数字,所以首先需要使用as.character()函数将其转换为char。

我们的解决方案是:

 dtimes <- "20151201 070104"
 dtsplit = strsplit(as.character(dtimes), " ")

如果您的表格中包含多个日期,例如您在评论中发布的日期:

df <- structure(list(V1 = structure(c(1L, 2L, 3L, 4L, 4L, 5L), .Label =     c("20151201 070104",     "20151201 070105", "20151201 070119", "20151201 070127", "20151201 070210"    ), class = "factor"), V2 = c(160.02, 160.02, 160.01, 160, 160.01,     160.02), V3 = c(2, 2, 1, 1, 1, 2)), .Names = c("V1", "V2", "V3"    ), class = "data.frame", row.names = c(NA, -6L))

我的猜测是你需要每列的日期,而不是时间。您可以使用sapply函数将strsplit应用于每一行(this question has more information about this):

df$date <- sapply(strsplit(as.character(df$V1), " ")[], "[[", 1)
df$time <- sapply(strsplit(as.character(df$V1), " ")[], "[[", 2)

#> df
#               V1     V2 V3     date   time
#1 20151201 070104 160.02  2 20151201 070104
#2 20151201 070105 160.02  2 20151201 070105
#3 20151201 070119 160.01  1 20151201 070119
#4 20151201 070127 160.00  1 20151201 070127
#5 20151201 070127 160.01  1 20151201 070127
#6 20151201 070210 160.02  2 20151201 070210