在R中以正确的格式将两列粘贴在一起

pasting two columns together in proper format in R

我有两列代表时间,一列代表小时,一列代表分钟。数据框看起来类似于:

hr    mn
0     0
0     30
1     0
1     30
2     0
2     30

我需要的是一种将它们粘贴在一起以获得一列的方法 hrmn 那是:

hrmn
0
30
100
130
200
230

我认为这可以使用 paste0 以某种方式完成,但这给了我:

hrmn <- as.numeric(paste0(hr,mn))

hrmn
0 
30
10
130
20
230

有没有办法将这两列粘贴在一起并获得我需要的格式?

df$hrmn <- df$hr*100 + df$mn

您需要检查 hrmn 列的 class。使用 class(df$hr)class(df$mn)。如果它们是数字,请使用:

df$hrmn <- df$hr*100 + df$mn

如果它们是字符。使用:

df$hrmn <- as.numeric(df$hr*100) + as.numeric(df$mn)

据我了解,您想获得 hour/minute 格式。你可以这样做:

mydf$hrmn <- paste0(sprintf("%02.0f", mydf$hr),":",sprintf("%02.0f", mydf$mn))

给出:

> mydf
  hr mn  hrmn
1  0  0 00:00
2  0 30 00:30
3  1  0 01:00
4  1 30 01:30
5  2  0 02:00
6  2 30 02:30

我们也可以在paste后的列中使用strptime,将format改为numeric

as.numeric(format(strptime(do.call(paste, df1), format='%H %M'), '%H%M'))
#[1]   0  30 100 130 200 230