我正在尝试提取data.frame
内的因子的部分内容,如下所示:
aug$V5 <- c("00:00:00","01:01:05","04:32:22")
格式是一个因素,我想提取前两位数字,因为它们是我感兴趣的小时数,并将它们放在我的矢量中的不同列中:
输出如下:
aug$hours <- c("00","01","04")
我想我只需要使用子功能,但我不确定。
感谢。
答案 0 :(得分:1)
或者使用一些基本R日期操作
V5 <- factor(c("00:00:00","01:01:05","04:32:22"))
as.POSIXlt(paste(Sys.Date(), V5))$hour
## [1] 0 1 4
答案 1 :(得分:0)
如果我在这里创建一个简单的示例因素
V5 <- factor(c("00:00:00","01:01:05","04:32:22"))
然后运行
gsub("^(\\d{2}).*","\\1",as.character(V5))
返回
[1] "00" "01" "04"
根据需要。
答案 2 :(得分:0)
lubridate
救援
> v <- c("00:00:00","01:01:05","04:32:22")
> library(lubridate)
> hour(hms(factor(v)))
[1] 0 1 4
或只是取一个子串
> substr(factor(v),1,2)
[1] "00" "01" "04"
答案 3 :(得分:0)
另一种解决方案:
V5 <- factor(c("00:00:00","01:01:05","04:32:22"))
data.frame(strsplit(as.character(V5), ':'))[1,]
c..00....00....00.. c..01....01....05.. c..04....32....22..
1 00 01 04
可以忽略上面的名字,或者:
setNames(data.frame(strsplit(as.character(V5), ':'))[1,],seq(length(V5)))
1 2 3
1 00 01 04
更好的是按照@Ananda Mahto在下面的评论中的建议:
sapply(strsplit(as.character(V5), ':'), '[[', 1)
[1] "00" "01" "04"