R 根据载体位置删除多个字符
我有以下列表元素。它包含原始文本,列基于字符长度。第一行的宽度始终为427个字符。其余行的宽度为375个字符 我需要删除每行375个字符宽的最后9个字符。这将是承运人位置367至375R 根据载体位置删除多个字符,r,R,我有以下列表元素。它包含原始文本,列基于字符长度。第一行的宽度始终为427个字符。其余行的宽度为375个字符 我需要删除每行375个字符宽的最后9个字符。这将是承运人位置367至375 df = structure(list(X1 = c("00000104900914254 1BBVA SEGUROS DE VIDA COLOMBIA S.A.
df = structure(list(X1 = c("00000104900914254 1BBVA SEGUROS DE VIDA COLOMBIA S.A. NI800240882 0ACRA 11 87-51 001130000000 7777777 LUZ.MARTINEZ@xxxx.COM 2021-042021-04-22U 0004900000000213P0000000000022021-04-21",
"00000012CC1130000000 MORENO REINA DANIELA MORENO AYALA LUIS ALBERTO CC63000000 03N1N68001 300004542630.08000000036400000000000 000454263 000908526",
"00000022CC63000000 MURILLO ESCALANTE KELLY JOHANA 08N1N68001 300009085260.08000000072700000000000 000908526 000908526"
)), .Names = "X1", row.names = c(NA, -3L), class = c("tbl_df",
"tbl", "data.frame"))
我们可以在
substr
library(dplyr)
out <- df %>%
mutate(X1 = substr(X1, 1, min(nchar(X1))))
我们可以在
substr
library(dplyr)
out <- df %>%
mutate(X1 = substr(X1, 1, min(nchar(X1))))
您可以使用
sub
甚至gsub
:
df$X2 <- sub("^(.{366}).{9}$", "\\1", df$X1, perl = TRUE)
nchar(df$X2)
[1] 427 366 366
df$X2您可以使用sub
甚至gsub
:
df$X2 <- sub("^(.{366}).{9}$", "\\1", df$X1, perl = TRUE)
nchar(df$X2)
[1] 427 366 366
df$X2这也是要添加到已经很好的解决方案中的另一个解决方案:
library(dplyr)
library(stringr)
DT %>%
mutate(X1 = ifelse(nchar(X1) != 427, str_sub(X1, 1L, 367L), X1)) %>%
mutate(nc = nchar(X1)) %>%
select(nc)
# A tibble: 3 x 1
nc
<int>
1 427
2 367
3 367
库(dplyr)
图书馆(stringr)
DT%>%
突变(X1=ifelse(nchar(X1)!=427,str_sub(X1,1L,367L),X1))%>%
突变(nc=nchar(X1))%>%
选择(nc)
#一个tibble:3x1
数控
1 427
2 367
3 367
最后两行代码用于测试目的,因此可以省略。这也是添加到已经很好的解决方案中的另一个解决方案:
library(dplyr)
library(stringr)
DT %>%
mutate(X1 = ifelse(nchar(X1) != 427, str_sub(X1, 1L, 367L), X1)) %>%
mutate(nc = nchar(X1)) %>%
select(nc)
# A tibble: 3 x 1
nc
<int>
1 427
2 367
3 367
库(dplyr)
图书馆(stringr)
DT%>%
突变(X1=ifelse(nchar(X1)!=427,str_sub(X1,1L,367L),X1))%>%
突变(nc=nchar(X1))%>%
选择(nc)
#一个tibble:3x1
数控
1 427
2 367
3 367
最后两行代码用于测试目的,因此可以省略