如何基于R中的条件将字符连接到列

如何基于R中的条件将字符连接到列,r,R,嗨,我有这个数据框 Table_Number.130. ID_HOUR Date Time_.EST. 1 137 480 365 600 2 340 0 365 1612 3 340 0 365 1619 4 340 0 365 657 5

嗨,我有这个数据框

Table_Number.130. ID_HOUR Date Time_.EST. 1 137 480 365 600 2 340 0 365 1612 3 340 0 365 1619 4 340 0 365 657 5 340 0 365 700 6 129 60 365 700 7 340 0 365 1703 8 340 0 365 1709 9 340 0 365 1740 10 340 0 365 1755 11 129 60 365 800 12 340 0 365 804 13 340 0 365 811 14 340 0 365 1817 15 340 0 365 1825 16 340 0 365 1833 17 340 0 365 1839 18 340 0 365 1848 19 340 0 365 1857 20 129 60 365 1900 表_第130号。ID\u小时日期时间\u.EST。 1 137 480 365 600 2 340 0 365 1612 3 340 0 365 1619 4 340 0 365 657 5 340 0 365 700 6 129 60 365 700 7 340 0 365 1703 8 340 0 365 1709 9 340 0 365 1740 10 340 0 365 1755 11 129 60 365 800 12 340 0 365 804 13 340 0 365 811 14 340 0 365 1817 15 340 0 365 1825 16 340 0 365 1833 17 340 0 365 1839 18 340 0 365 1848 19 340 0 365 1857 20 129 60 365 1900 我正在尝试将时间\预计值。字段转换为时间格式,但当我运行

x[,"Time_.EST."]<-format(as.Date(x[,"Time_.EST."], format="%H%M" ), format = "%H:%M")
x[,“Time_uu.EST.”]如果列中只有3个字符,则会在上粘贴一个“0”

x[["Time_.EST."]] = ifelse(nchar(x[["Time_.EST."]]) == 3,
                           paste0("0", x[["Time_.EST."]]),
                           x[["Time_.EST."]])

您可以使用sprintf函数将数据填充到一组数字,如下所示:

newtime <- sprintf("%04d",times$time)
#Make a new list with at least 4 digits: adds leading zeroes as needed
times <- cbind(newtime,times)
#Combine the two together

#A single step would also work
times$newtimes <- sprintf("%04d",times$time)

newtime格式化的目标是什么?可读性?如果是这样,只需自己插入冒号即可。是为了准时做算术吗?如果是这样,只需将其转换为分钟,并保持数字。它是为了别的什么吗?如果它是关于在尾部填充
0
你可以用
stringi
像这样
stringi::stri_pad_right(c(161965700),4,0)
stringi::stri_pad_right(x$Time.EST.,4,0)
在你的例子中。
strtime(sprintf(“%04s”,df$Time.EST.),format=“%H%M”)
。我之前尝试过,但没有成功,我将其编辑为
x[[“Time.EST.”]]=if(nchar(x[[“Time.EST.”]]==3){paste0(“0”,x[[Time.EST.”]),x[[Time.EST.”]}
这会对您使用的计算单一时间且没有“else”的
有任何影响吗内置的。我使用了
ifelse
,它是矢量化的,并且内置了一个“else”。