r - 如何在 R 中对每行使用不同的字符位置对列进行子串

标签 r dataframe substring

我想在数据框中创建一个附加列,它是数据框中现有列的子字符串,但每行使用不同的起点和终点。

具体来说,下面示例中的“codes”列在字符串中的某处包含一个冒号字符“:”。每个字符串的这个位置都不同。我想取冒号之前的两个字符和冒号之后的两个字符,以及冒号。

我目前拥有的示例:

letters <- c("A", "B", "C")

codes <- c("lksjdfi99:99lksjdf", "nsj78:12osjsm", "a12:67opaidsf")

df <- data.frame(letters, codes)

print(df)

  letters              codes
1       A lksjdfi99:99lksjdf
2       B      nsj78:12osjsm
3       C      a12:67opaidsf

这是我想要的一个例子:

  letters              codes new_col
1       A lksjdfi99:99lksjdf   99:99
2       B      nsj78:12osjsm   78:12
3       C      a12:67opaidsf   12:67

如有任何帮助,我们将不胜感激。

最佳答案

我们可以在base R中使用sub

df$new_col <- sub("\\D+(\\d+:\\d+)\\D+", "\\1", df$codes)

-输出

> df
  letters              codes new_col
1       A lksjdfi99:99lksjdf   99:99
2       B      nsj78:12osjsm   78:12
3       C      a12:67opaidsf   12:67

关于r - 如何在 R 中对每行使用不同的字符位置对列进行子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68761502/

相关文章:

r - 基于R中列中连续值的条件插入行

r - 如何在 R 中提取函数(写为字符串)中的参数?

r - 如何根据在一列中排序的奇数列重新排列偶数列

r - 匹配 2 个不同数据帧之间的行值组合

r - 测试 R 中多个系数的相等性

python - 创建一个具有固定第一个值的空 Pandas DataFrame 列,然后用公式填充它

c# - 参数超出范围

MYSQL,如何合并名字的前2个字母和姓氏的前5个字母

ios - 从 <span to > 中提取 NSString 的一部分,其间有可变字符

python - 给定段的长度和段中的偏移量,如何从 Pandas 的开始创建偏移量?