R 基于索引的字符串拆分
我有一个DF,它由一列字母数字值组成。我想拆分这些值并将其存储在单独的列中 我有一个数据框,它有一列字母数字值。我希望分割该值并将其存储到新列中,如示例中所示R 基于索引的字符串拆分,r,R,我有一个DF,它由一列字母数字值组成。我想拆分这些值并将其存储在单独的列中 我有一个数据框,它有一列字母数字值。我希望分割该值并将其存储到新列中,如示例中所示 str一个选项是使用从tidyverse中分离 library(tidyverse) tibble(col1 = str) %>% separate(col1, into = paste0("col", 0:7), c(4, 8, 16, 20, 26, 30, 32)) %>% select(-1) # A t
str一个选项是使用
从tidyverse
中分离
library(tidyverse)
tibble(col1 = str) %>%
separate(col1, into = paste0("col", 0:7), c(4, 8, 16, 20, 26, 30, 32)) %>%
select(-1)
# A tibble: 6 x 7
# col1 col2 col3 col4 col5 col6 col7
# <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#1 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#2 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#3 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#4 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#5 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#6 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
一种选择是使用将与tidyverse
library(tidyverse)
tibble(col1 = str) %>%
separate(col1, into = paste0("col", 0:7), c(4, 8, 16, 20, 26, 30, 32)) %>%
select(-1)
# A tibble: 6 x 7
# col1 col2 col3 col4 col5 col6 col7
# <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#1 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#2 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#3 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#4 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#5 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
#6 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
使用一行示例输出查找字段宽度。由于示例输出中似乎缺少输入的前4个字符,因此以4开头。然后在read.fwf
中使用它。如果您确实不希望输入的前4个字符出现在输出中,则将read.fwf
行替换为read.fwf(textConnection(str),widths)[-1]
。没有使用任何软件包
sample.out <- "AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077"
widths <- c(4, sapply(read.table(text = sample.out, as.is = TRUE), nchar))
read.fwf(textConnection(str), widths)
使用一行示例输出查找字段宽度。由于示例输出中似乎缺少输入的前4个字符,因此以4开头。然后在read.fwf
中使用它。如果您确实不希望输入的前4个字符出现在输出中,则将read.fwf
行替换为read.fwf(textConnection(str),widths)[-1]
。没有使用任何软件包
sample.out <- "AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077"
widths <- c(4, sapply(read.table(text = sample.out, as.is = TRUE), nchar))
read.fwf(textConnection(str), widths)
您提供的第一个解决方案是为我工作。。。。非常感谢…你提供的第一个解决方案是为我工作。。。。谢谢。。。。
V1 V2 V3 V4 V5 V6 V7 V8
1 1001 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
2 1001 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
3 1001 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
4 1001 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
5 1001 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077
6 1001 AA00 100BC300 AA01 111000 AA02 99 F40400F4053DF40C0000F4030000F40680F4077