1

我有一个向量是“请注明您的年龄”问题的答案。

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

一些答案是“32”;“32岁”;“32 岁”;“即将完成70年”;“老,很老…………四十多岁”;“到 2013 年 10 月 7 日,我已经 31 岁”;《十八岁》;等等等等

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

谢谢!

4

1 回答 1

2

用这个:

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])

顺便说一句:您可能还想删除“\”。在上面的正则表达式中,以避免非整数结果。

于 2013-09-20T19:33:49.510 回答