我有以下数据,我想计算总分钟数,我想知道是否可以将列拆分为两列,其中一列中的分钟和另一列中的秒数?
> q
time
1 0m 22s
2 1m 7s
3 3m 35s
4 11m 43s
5 1m 8s
6 2m 21s
7 9m 33s
8 0m 56s
9 0m 2s
10 0m 2s
11 0m 50s
12 0m 25s
13 0m 33s
14 2m 26s
15 0m 20s
16 1m 47s
17 0m 36s
18 0m 3s
19 0m 2s
20 0m 5s
Run Code Online (Sandbox Code Playgroud)
==>给:
> q
min seconds
1 0 22
2 1 7
Run Code Online (Sandbox Code Playgroud)
等等
我对日期不熟悉,但你可以查看函数as.Date或strptime.使用您的data.frame:
df <- data.frame(time = c("0m 22s", "1m 7s", "3m 35s", "11m 43s", "1m 8s", "2m 21s", "9m 33s", "0m 56s", "0m 2s", "0m 2s", "0m 50s", "0m 25s", "0m 33s", "2m 26s", "0m 20s", "1m 47s", "0m 36s", "0m 3s", "0m 2s", "0m 5s"))
df$time.2 <- strptime(df$time, "%Mm %Ss")
Run Code Online (Sandbox Code Playgroud)
现在您可以选择具体的值,只需看看即可
attributes(df[, "time.2"])
Run Code Online (Sandbox Code Playgroud)
并指派
df$min <- df[, "time.2"][["min"]]
df$sec <- df[, "time.2"][["sec"]]
Run Code Online (Sandbox Code Playgroud)
这给了:
R> df
time time.2 min sec
1 0m 22s 2010-12-02 00:00:22 0 22
2 1m 7s 2010-12-02 00:01:07 1 7
3 3m 35s 2010-12-02 00:03:35 3 35
4 11m 43s 2010-12-02 00:11:43 11 43
5 1m 8s 2010-12-02 00:01:08 1 8
6 2m 21s 2010-12-02 00:02:21 2 21
7 9m 33s 2010-12-02 00:09:33 9 33
8 0m 56s 2010-12-02 00:00:56 0 56
9 0m 2s 2010-12-02 00:00:02 0 2
10 0m 2s 2010-12-02 00:00:02 0 2
11 0m 50s 2010-12-02 00:00:50 0 50
12 0m 25s 2010-12-02 00:00:25 0 25
13 0m 33s 2010-12-02 00:00:33 0 33
14 2m 26s 2010-12-02 00:02:26 2 26
15 0m 20s 2010-12-02 00:00:20 0 20
16 1m 47s 2010-12-02 00:01:47 1 47
17 0m 36s 2010-12-02 00:00:36 0 36
18 0m 3s 2010-12-02 00:00:03 0 3
19 0m 2s 2010-12-02 00:00:02 0 2
20 0m 5s 2010-12-02 00:00:05 0 5
Run Code Online (Sandbox Code Playgroud)
编辑:因为您只想拆分data.frame以便能够计算总分钟数,所以您甚至不需要创建新列min,sec并且可以简单地使用该列time.2.这两个步骤已经足够了
df$time.2 <- strptime(df$time, "%Mm %Ss")
sum(df[, "time.2"][["min"]])
R> [1] 30
Run Code Online (Sandbox Code Playgroud)