首页 > 解决方案 > 根据载体位置删除多个字符

问题描述

我有以下列表元素。它包含原始文本,列基于字符长度。第一行总是 427 个字符宽。其余行为 375 个字符宽。

我需要删除 375 个字符宽的每一行的最后 9 个字符。那将是航母位置 367 到 375

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"))

标签: r

解决方案


我们可以使用ncharwith minonsubstr

library(dplyr)
out <-  df %>%
   mutate(X1 = substr(X1, 1, min(nchar(X1))))

如果我们需要更改其余行保持第一行相同

out <- df %>%
        mutate(X1 = replace(X1, -1, substr(X1[-1], 1, 367)))


nchar(out$X1)
#[1] 427 367 367

注意:substr应该是最快的选择


或使用base R

df$X1 <- substr(df$X1, 1, min(nchar(df$X1)))

推荐阅读