删除列向量中的数字和点

标签 r

我有一个列向量,很难对其进行标准化。它看起来像这样:

X2015.11.03.15.00.00.1
X2015.11.03.15.00.00.2
X2015.11.03.15.00.00.13
X2015.11.03.15.00.00.14
X2015.11.03.15.00.00.14
X2015.11.03.16.00.00
X2015.11.03.16.00.00
X2015.11.03.17.00.00 

我想要得到的是规范化的时间戳:

2015.11.03 15.00.00
2015.11.03 15.00.00
2015.11.03 15.00.00
2015.11.03 15.00.00
2015.11.03 15.00.00
2015.11.03 16.00.00
2015.11.03 16.00.00
2015.11.03 17.00.00

到目前为止,我尝试了[Sub和gsub][1]的各种组合,但没有得到最终结果。

#remove X in Timestamp
x <- gsub("\\X", "", x)
#put space between time date and time
x <- sub("\\s+$", "", gsub('(.{11})', '\\1 ', x))

现在看起来像这样:

2015.11.03. 15.00.00.1
2015.11.03. 15.00.00.2
2015.11.03. 15.00.00.13
2015.11.03. 15.00.00.14
2015.11.03. 15.00.00.14
2015.11.03. 16.00.00
2015.11.03. 16.00.00
2015.11.03. 17.00.00

如何解决其余问题?如有任何帮助,我们将不胜感激。

最佳答案

我们可以使用 as.POSIXct 使用自定义格式转换为日期时间,在我看来,在这种情况下,这是比使用正则表达式更好的选择,因为输入本质上是日期时间值:

df$V2 <- as.POSIXct(df$V1, format = "X%Y.%m.%d.%H.%M.%S")

输出:

                       V1                  V2
1  X2015.11.03.15.00.00.1 2015-11-03 15:00:00
2  X2015.11.03.15.00.00.2 2015-11-03 15:00:00
3 X2015.11.03.15.00.00.13 2015-11-03 15:00:00
4 X2015.11.03.15.00.00.14 2015-11-03 15:00:00
5 X2015.11.03.15.00.00.14 2015-11-03 15:00:00
6    X2015.11.03.16.00.00 2015-11-03 16:00:00
7    X2015.11.03.16.00.00 2015-11-03 16:00:00
8    X2015.11.03.17.00.00 2015-11-03 17:00:00

数据:

df <- structure(list(V1 = structure(c(1L, 4L, 2L, 3L, 3L, 5L, 5L, 6L
), .Label = c("X2015.11.03.15.00.00.1", "X2015.11.03.15.00.00.13", 
"X2015.11.03.15.00.00.14", "X2015.11.03.15.00.00.2", "X2015.11.03.16.00.00", 
"X2015.11.03.17.00.00"), class = "factor")), class = "data.frame", row.names = c(NA, 
-8L))

关于删除列向量中的数字和点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55124005/

相关文章:

r - RStudio 中的 Sweave 找不到全局环境中加载的对象

r - 如何获取 R Shiny 中所有输出元素的列表

r - 使用 Tidycensus 创建二元分区统计图?

r - 如何使用 Amelia 简单地估算 R 中的 NA 值,然后将数据集划分为 70 :30 split? 中的数据集和训练集

r - 将 for 循环的结果分配给空矩阵

r - ggplot 标签中的两个字体

使用 sqldf 检索列的具有相同最小值的所有行

r - 将多列粘贴到一列中,但删除任何 NA、空白或重复值

R For循环删除从一个字符串到列中第二个字符串的行范围

r - 当 x 轴是分类的时,如何标记水平线?