r - 根据载体位置删除多个字符
问题描述
我有以下列表元素。它包含原始文本,列基于字符长度。第一行总是 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"))
解决方案
我们可以使用nchar
with min
onsubstr
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)))
推荐阅读
- python - 将 pyspark 数据帧拆分为块并转换为字典
- javascript - Electron 项目结构,在子目录下无法运行
- c++ - 创建Mesh类并实现不生成模型OpenGL?
- azure-active-directory - 身份验证后 Azure AD 重定向到错误的位置 (localhost)
- sql - 总结2个表的日期并比较它们并根据比较返回新列
- node.js - 为什么 Stripe 付款不完整?
- android - 如何在没有 Play 商店的情况下将生成的 apk 部署到 Wear OS 设备
- php - php array_slice 不显示任何内容
- c++ - 超出 CPU 时间限制:当 MPI_Sent 非常大的 int*
- ruby-on-rails - 如何定义嵌套控制器以使用 Rails 自动加载器?