Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据变量的长度分开_R_Tidyverse_Tidyr - Fatal编程技术网

R 根据变量的长度分开

R 根据变量的长度分开,r,tidyverse,tidyr,R,Tidyverse,Tidyr,例如,我有一个时间数据 time <- c(516, 715, 1625) timeAtidyverse选项,使用separate和积极的前瞻模式 library(tidyverse) df %>% separate(time, c("hours", "minutes"), sep = "(?=\\d{2}$)") # hours minutes #1 5 16 #2 7 15 #3 16 25 说明:sep=“(?=\\d{

例如,我有一个时间数据

time <- c(516, 715, 1625)

timeA
tidyverse
选项,使用
separate
和积极的前瞻模式

library(tidyverse)
df %>% separate(time, c("hours", "minutes"), sep = "(?=\\d{2}$)")
#  hours minutes
#1     5      16
#2     7      15
#3    16      25
说明:
sep=“(?=\\d{2}$)”
在以下两个字符和最后两个字符为两位数的位置将条目转换为两部分


或者使用
strsplit

t(sapply(strsplit(as.character(df$time), ""), function(x)
    as.numeric(rev(tapply(
        x,
        rev(rep(1:ceiling(length(x) / 2), each = 2, length.out = length(x))),
        FUN = function(x) paste0(x, collapse = ""))))))
#     [,1] [,2]
#[1,]    5   16
#[2,]    7   15
#[3,]   16   25

样本数据
df另一个
tidyverse
选项:

library(tidyverse)
df %>% mutate(hours   = str_sub(time, end = -3),
              minutes = str_sub(time, -2))

  time hours minutes
1  516     5      16
2  715     7      15
3 1625    16      25

除字符串方法外,将其转换为日期时间对象并提取“hour”和“min”

v1 <- strptime(sprintf("%04d", time), format = "%H%M")
v1$hour
#[1]  5  7 16
v1$min
#[1] 16 15 25

v1这是正则表达式吗?@Bin是
sep
参数是regexp。
v1 <- strptime(sprintf("%04d", time), format = "%H%M")
v1$hour
#[1]  5  7 16
v1$min
#[1] 16 15 25