我有長度不等的字串,例如:
x <- c("11333333444A", "3aaa0085hb", "&ffvy?")
我想x根據存盤在向量中的數字資訊將字串分解為子字串y:
y <- c(2, 8, 11, 12)
獲取第一個2字符,然后是以下字符,直到位置8字符,然后直到位置11字符,最后直到12:
11, 333333, 444, A
3a, aa0085, hb
&f, fvy?
我嘗試使用str_locate_all,str_which和其他人,stringr但無法找到解決方案。
uj5u.com熱心網友回復:
給定拆分位置后,一個更簡單的選擇是separate可以sep將向量索引作為拆分分隔符
library(tibble)
library(stringr)
library(tidyr)
tibble(x) %>%
separate(x, into = str_c('col', seq_along(y)), sep = y)
-輸出
# A tibble: 3 × 4
col1 col2 col3 col4
<chr> <chr> <chr> <chr>
1 11 333333 "444" "A"
2 3a aa0085 "hb" ""
3 &f fvy? "" ""
或使用base Rwithread.fwf并widths通過獲取diff位置索引的erence 來指定
read.fwf(textConnection(x), widths = c(y[1], diff(y)))
V1 V2 V3 V4
1 11 333333 444 A
2 3a aa0085 hb <NA>
3 &f fvy? <NA> <NA>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/527682.html
標籤:r弦乐
上一篇:替換串列名稱(如果存在)
下一篇:R/箭頭總結變數列
