首页 > 解决方案 > 如何在R中将一列分成两列?

问题描述

我有一列如下所述,我想分成两列日期和时间。我怎样才能做到这一点 ?

X$Datime
11/7/2016 11:51
11/7/2016 17:57
12/7/2016 9:17
12/7/2016 21:08
13-07-2016 08:33:16
13-07-2016 21:57:28
14-07-2016 06:15:32
15-07-2016 05:11:52
15-07-2016 17:57:27
11/7/2016 6:46
12/7/2016 5:08
12/7/2016 12:30
13-07-2016 04:49:20

标签: r

解决方案


你可以用strsplit.

Y <- do.call(rbind, strsplit(X$Datime, " "))
Y <- as.data.frame(Y, stringsAsFactors = FALSE)
names(Y) <- c("Date", "time")

请注意,该列Datime必须属于类character才能使上述代码正常工作。很多时候,字符向量属于 class factor,当它们是 data.frame 列时。如果您的数据是这种情况,请改用

strsplit(as.character(X$Datime), " ")

数据。

Datime <- scan(what = character(), text = "
11/7/2016 11:51
11/7/2016 17:57
12/7/2016 9:17
12/7/2016 21:08
13-07-2016 08:33:16
13-07-2016 21:57:28
14-07-2016 06:15:32
15-07-2016 05:11:52
15-07-2016 17:57:27
11/7/2016 6:46
12/7/2016 5:08
12/7/2016 12:30
13-07-2016 04:49:20
", sep = "\n")

X <- data.frame(Datime, stringsAsFactors = FALSE)

推荐阅读