拆分由数字范围组成的列,并将所得的数字用作R

问题描述

我的示例数据框如下所示:

structure(list(Speed = c("0-20","21-40","41-60","61-80","81-100"
),SpeedLevel = c(1,2,3,4,5)),row.names = c(NA,-5L),class = c("tbl_df","tbl","data.frame"))
> 

我需要添加一列,该列将具有与第一列“速度”相对应的范围内的所有值。 也就是说,我需要将字符串拆分为“-”,并给出从最小值到最大值的值范围。

例如,在“速度”列的第一行中,我们有“ 0-20”,因此,分割后的范围将是从0到20的所有数字。一旦得到,便可以使用split_rows或tidyr和dplyr分别如下图所示。

预期输出:

structure(list(Speed = c("0-20","0-20","81-100","81-100"),1,5,5),ActualSpeed = c(0,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100)),-101L),"data.frame"
))
> 

对于字符串拆分,我使用“ strsplit”函数,但是不确定是否可以在这里使用。有人可以让我知道如何拆分“速度”列,并将两个结果数字用作范围值。

解决方法

我们可以使用separate将“速度”分为两列,然后根据{的开始,结束和list的值创建一个序列unnest列。 {1}}列

list

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...