如何在R中提取特定值

问题描述 投票:0回答:3

我想从需要在R中进行数据整理的数据帧中提取特定值。我无法提出在R中使用的任何方法,因此将不胜感激。

作为示例,在我的数据框中看起来像这样:

原始数据如下所示:

df <- data.frame(
  v1=c('aa',438652,22, ,01),
  v2=c(343012,45, ,'pi',75),
  v3=c(56,'hi',78,670934, ),
  v4=c( ,'cc',906235,05,44))

但是,我想将“ 6位数字”提取到另一个新帧中看起来像这样:

new <- data.frame(
  v5=c(438652,343012,670934,906235))

有人有什么想法吗?那将是巨大的感谢!

r numbers extract digits
3个回答
0
投票

我们可以使用nchar计算字符数

temp <- as.character(unlist(df))
data.frame(v5 = temp[nchar(temp) == 6])

#      v5
#1 438652
#2 343012
#3 670934
#4 906235

0
投票

您可以使用正则表达式

as.numeric(as.character(unlist(df)[grep("\\d{6}", unlist(df))]))
#[1] 438652 343012 670934 906235

要存储在新的data.frame中>

data.frame(v5 = as.numeric(as.character(unlist(df)[grep("\\d{6}", unlist(df))])))
#      v5
#1 438652
#2 343012
#3 670934
#4 906235

0
投票

这里是tidyverse的选项

© www.soinside.com 2019 - 2024. All rights reserved.