让我们有一个以下向量:
vector <- c("0:00 0,6 0:00", "5:00 1,2 5:00","9:30 0,9 22:00","16:00 1,0","21:30 0,9")
我们看到该元素包含:
小时,数字(例如“0,6”),小时2(或空白)
它似乎是结构化的:在“:”之后总是两位数(“00”或“30”)然后是“”和带小数点的数字(逗号)。
我想创建数据框并获取包含第一小时和给定数字的数据框,例如:
#Expected result:
df
$hours $value
#0:00 0.6
#5:00 1.2
#9:30 0.9
#16:00 1.0
#21:30 0.9
你可以试试:
data.frame(hours = sapply(strsplit(vector, " "), function(x) x[1]),
value = sapply(strsplit(vector, " "), function(x) x[2]))
hours value
1 0:00 0,6
2 5:00 1,2
3 9:30 0,9
4 16:00 1,0
5 21:30 0,9
它首先将向量按 分割strsplit()
,然后将第一个和第二个元素合并到 a 中data.frame
。
如果您还想用小数替换逗号:
data.frame(hours = sapply(strsplit(vector, " "), function(x) x[1]),
value = sub(",", ".", sapply(strsplit(vector, " "), function(x) x[2])))
hours value
1 0:00 0.6
2 5:00 1.2
3 9:30 0.9
4 16:00 1.0
5 21:30 0.9
它的作用与上面的代码相同,但它还使用sub()
.
或者:
df <- read.table(text = vector, sep = " ", dec = ",", as.is = TRUE, fill = TRUE)[, 1:2]
colnames(df) <- c("hours", "value")
hours value
1 0:00 0.6
2 5:00 1.2
3 9:30 0.9
4 16:00 1.0
5 21:30 0.9
它将向量转换为 a data.frame
,空格用作分隔符,逗号用作小数,然后选择前两列。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句