2017-03-06 153 views
0

我的数据集,其值看起来像有一个字符串(和NAS)的列:[R使用特殊字符

"85min" "1hr 19min" "98min" NA "119min" "105min" NA "1hr 30min" 

我想所有的值更改为NUMERICS(以分钟为单位),所以这些值是这样的:

85 79 98 NA 119 105 NA 90 

我试图通过片做,首先去除“最小”,则删除“小时”,然后将“1”到“60”,然后改变中间空格加号,给我:

"85" "60+19" "98" NA "119" "105" NA "60+30" 

我希望通过应用as.numeric,我会得到那些带有“+”符号的公式,但它们只是导致了NAs。

有做这种转换的简写方法吗?提前谢谢了!

+0

相关:[从入库时间例如“15分钟”或“2秒”到“零时15分○○秒”或“00:00:02”使用现有的R函数](http://stackoverflow.com/questions/8204878/from-timespan-for-example-15-min-or-2-sec-to-001500-or-000002-usin)和[转换年龄输入作为'X周,Y天,Z小时'在R](http://stackoverflow.com/questions/32744743/convert-age-entered-as-x-weeks-y-days-z-hours-in-r ?noredirect = 1&lq = 1) – Henrik

回答

0

是,您需要parseeval

strings = c("85", "60+19", "98", NA, "119", "105", NA, "60+30") 
sapply(parse(text=strings), eval) 
[1] 85 79 98 NA 119 105 NA 90 
+0

是的,那正是我所期待的。非常感谢。我只希望我几天前问过...... –