我想在数据框中创建一个附加列,它是数据框中现有列的子字符串,但每行使用不同的起点和终点。
具体来说,下面示例中的“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/