将字符串答案转换为数字



我有一个向量,它是"请注明您的年龄"问题的答案。

问题是答案是一个字符串。所以,所以好人的答案有许多不同的和疯狂的形式。

有些答案是"32";"32年";"32 años";"即将完成70年";"老了,很老了...四十年代中期";"到2013年10月7日,我31岁了";"十八岁";等等

等等

有没有办法将尽可能多的这些数据转换为数字,其余数据转换为 NA?(手动操作不是一个可取的选择,因为有数千个观察)

谢谢!

使用这个:

L <- lapply(regmatches(s, gregexpr("[0-9\.]+",s)), as.numeric)

结果 ( s <- "by 7th october 2013, i'm 31yo" ):

# [[1]]
# [1]    7 2013   31

要返回具有NA的数字向量,其中上面的列表L有多个数字,请使用以下命令:

result <- rep(NA, length(L))
ok <- sapply(L, length)==1
result[ok] <- unlist(L[ok])

顺便说一句:您也可以想要删除上述正则表达式中的"\."以避免非整数结果。

最新更新