R 将没有空格的10个连续数字分开
我的数据是给定格式的- 如何在新列中获得10个连续数字?提前谢谢R 将没有空格的10个连续数字分开,r,R,我的数据是给定格式的- 如何在新列中获得10个连续数字?提前谢谢 structure(list(Datetime = c("12/05/2017 08:22", "12/05/2017 08:32", "12/05/2017 08:32", "12/05/2017 08:44", "12/05/2017 08:44", "12/05/2017 08:47", "12/05/2017 08:48", "12/05/2017 08:49", "12/05/2017 08:51"),
structure(list(Datetime = c("12/05/2017 08:22", "12/05/2017 08:32",
"12/05/2017 08:32", "12/05/2017 08:44", "12/05/2017 08:44", "12/05/2017 08:47",
"12/05/2017 08:48", "12/05/2017 08:49", "12/05/2017 08:51"),
Message = c("‪+91 98122 92212†< >", "‪+91 97799 88581†9417673824 363006",
"‪+91 97799 88581†< >", "‪+91 99969 42327†9990175777",
"‪+91 99969 42327†< >", "‪+91 98101 62461â€", "‪+91 98156 37302â€",
"‪+91 98156 37302†< >", "‪+91 88720 30191†602013 9317588213"
)), .Names = c("Datetime", "Message"), row.names = c("352",
"353", "354", "355", "356", "357", "358", "365", "366"), class = "data.frame")
使用
stringi
package
library(stringi)
unlist(stri_extract_all_regex(df$Message, '([0-9]+){10}'))
#[1] NA "9417673824" NA "9990175777" NA NA NA NA "9317588213"
通过Base R
sapply(strsplit(trimws(gsub('\\D+', ' ', df$Message)), ' '),
function(i) i[nchar(i) == 10])
or
sapply(strsplit(trimws(gsub('\\D+', ' ', df$Message)), ' '), function(i)
replace(i[nchar(i) == 10], !length(i[nchar(i) == 10]), NA))
#[1] NA "9417673824" NA "9990175777" NA NA NA NA "9317588213"
请使用
dput
和预期输出(而不是图像)显示一个小示例,因为我们无法从图像复制显示预期输出和一些迄今为止您拥有的R代码。如果是类似“my.df$nR”的数据帧,预期输出是什么?我想将10个连续数字分开(没有空格)从列消息到新列
sapply(strsplit(trimws(gsub('\\D+', ' ', df$Message)), ' '),
function(i) i[nchar(i) == 10])
or
sapply(strsplit(trimws(gsub('\\D+', ' ', df$Message)), ' '), function(i)
replace(i[nchar(i) == 10], !length(i[nchar(i) == 10]), NA))
#[1] NA "9417673824" NA "9990175777" NA NA NA NA "9317588213"