我有一个向量,它是"请注明您的年龄"问题的答案。
问题是答案是一个字符串。所以,所以好人的答案有许多不同的和疯狂的形式。
有些答案是"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])
顺便说一句:您也可以想要删除上述正则表达式中的"\."以避免非整数结果。