我已经在 R 中成功从数据帧中提取了特定值。但是,还有另一个问题我无法解决。如果有任何帮助,我们将不胜感激。
原始数据如下所示: 我想从每一行中提取 6 位数字,但框架中没有一些行。它看起来像这样:
df <- data.frame(
v1=c('aa',438652,22,01,54,5892),
v2=c(343012,45,'pi',75,2001,3),
v3=c(56,'hi',78,670934,77,90),
v4=c('cc','go',35,4458,40021,576),
v5=c('ya',435,05,44,90032,6021),
v6=c(432,21,3013,5,302001,'fgh'))
但是,
我想将“6 位数字”提取到另一个新框架中,并且也包含在“NA”中
它看起来像这样:
new <- data.frame(
v7=c(343012,438652,NA,670934,302001,NA))
有人有什么想法吗?这将是一个巨大的赞赏!
最佳答案
假设我们需要提取每行
out <- data.frame(v7 = apply(df, 1, function(x) grep("^\\d{6}", x,
value = TRUE)[1]))
<小时/>
另一个选项是在将 6 位数字以外的所有值替换为 NA
后合并
library(dplyr)
library(stringr)
df %>%
mutate_all(~ replace(as.character(.),
str_detect(., "^\\d{6}$", negate = TRUE), NA)) %>%
transmute(v7 = coalesce(!!! .))
关于r - 如何提取R中的特定数字(包括NA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59128376/