Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 根据载体位置删除多个字符_R - Fatal编程技术网

R 根据载体位置删除多个字符

R 根据载体位置删除多个字符,r,R,我有以下列表元素。它包含原始文本,列基于字符长度。第一行的宽度始终为427个字符。其余行的宽度为375个字符 我需要删除每行375个字符宽的最后9个字符。这将是承运人位置367至375 df = structure(list(X1 = c("00000104900914254 1BBVA SEGUROS DE VIDA COLOMBIA S.A.

我有以下列表元素。它包含原始文本,列基于字符长度。第一行的宽度始终为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"))

我们可以在
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
最后两行代码用于测试目的,因此可以省略