gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:52:03 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com