![](/img/trans.png)
[英]R: Splitting comma-separated values from one column into a new dataframe (or how to use strsplit results)
[英]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, 2
或name1, 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.