从多个字母和数字字符串中减去1个字母和数字

问题描述 投票:2回答:3

我有一个字符串向量:

grid_loc <- c("B2", "B3", "B4", "C2", "C3", "C4", "D2", "D3", "D4")

我怎样才能重新编码这些字符串,以便新的矢量看起来像这样?:

c("A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3")

如您所见,我希望每个字母和数字字符串都从中减去“一”。 qazxsw poi成为qazxsw poi,qazxsw poi成为B等。

在原始数据集中没有包含字母A或数字3的字符串,因此弄清楚如何处理这种情况不是问题。

我试图使用2手动重新编码每个字符串,但由于真实数据集的大小,这太费力了。

r vector gsub
3个回答
3
投票

如果原始矢量中没有“A”或“1”,那么一个选项是使用A减去数字并将字母替换为前面的字母

1

data

gsub()

4
投票

另一种方法,使用gsubfn可以在library(gsubfn) f1 <- function(x, y) paste0(LETTERS[match(x, LETTERS)-1], as.numeric(y) - 1) gsubfn('([A-Z])([0-9]+)', f1, grid_loc) #[1] "A1" "A2" "A3" "B1" "B2" "B3" "C1" "C2" "C3" "A19" 的字母后面的grid_loc <- c("B2", "B3", "B4", "C2", "C3", "C4", "D2", "D3", "D4", "B20") ,计算每个部分的“减1”操作并重新制作它们:

base R

0
投票

这里纯粹是基础R方式:

split

数据

strsplit
© www.soinside.com 2019 - 2024. All rights reserved.