我想从需要在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))
有人有什么想法吗?那将是巨大的感谢!
我们可以使用nchar
计算字符数
temp <- as.character(unlist(df))
data.frame(v5 = temp[nchar(temp) == 6])
# v5
#1 438652
#2 343012
#3 670934
#4 906235
您可以使用正则表达式
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
这里是tidyverse
的选项