r - 如何提取R中的特定数字(包括NA)

标签 r numbers extract na col

我已经在 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/

相关文章:

通过导航到 navbarPage 中的特定 tabPanel 触发 R Shiny 响应式(Reactive)

python - 两个数字并打印从第一个数字到第二个数字的列表

html - 如何限制文本区域只包含数字?

r - 提取特殊字符之间的文本 R

r - 加载 `library(packagename)` 时提醒用户包小插曲的最佳实践?

r - 使用 ggplot2 绘制分面或非分面(即重叠)时的不同直方图

javascript将带前导零的数字转换为字符串它将十进制数更改为八进制数

python - 如何使用特定步长的窗口提取短序列?

php - 使用条件从 Php 数组中提取

r - 在 data.tables 和更新 data.table 之间匹配唯一和非唯一值