在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
您需要检查 hr
和 mn
列的 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
我有两列代表时间,一列代表小时,一列代表分钟。数据框看起来类似于:
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
您需要检查 hr
和 mn
列的 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