簡體   English   中英

在R中使用strsplit分割逗號分隔的混合文本和數字字符串

[英]splitting comma separated mixed text and numeric string with strsplit in R

我有許多形式為name1, name2 and name3, 0, 1, 2 name1, name2, name3 and name4, 0, 1, 2name1, name2, name3 and name4, 0, 1, 2並想將向量分成4個元素,其中第一個元素是整體名稱的文本字符串。 問題在於strsplit不會區分文本和數字,並且在第一種情況下將字符串拆分為5個元素,在第二種情況下拆分為6個元素。 如何告訴R動態地跳過名稱可變的字符串文本部分?

您有兩個主要選擇:
(1)用grep提取數字,然后提取出來。
(2)用逗號分割,然后強制為數字並檢查NA

我喜歡第二個

splat <- strsplit(x, ",")[[1]]
numbs <- !is.na(suppressWarnings(as.numeric(splat)))

c(paste(splat[!numbs], collapse=","), splat[numbs])
# [1] "name1, name2 and name3" " 0" " 1" " 2"

您也可以在正確的位置插入定界符,然后在其上拆分:

delimmed <- gsub('(.*[a-z][0-9]+| [0-9]+),','\\1%',strr)
strsplit(delimmed,'%')

正則表達式的第一部分(在|的左側)將所有內容( .* )匹配為最終的字母數字逗號組合; 第二個匹配任何空格-數字組合。 逗號被刪除(因為它在括號內),並替換為%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM