我有一个向量是“请注明您的年龄”问题的答案。
问题是答案是一个字符串。所以,这么好的人的答案采取了许多不同的和疯狂的形式。
一些答案是“32”;“32岁”;“32 岁”;“即将完成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])
顺便说一句:您可能还想删除“\”。在上面的正则表达式中,以避免非整数结果。