首页 > 解决方案 > 编辑R中列中的每一行

问题描述

我有一个看起来像这样的数据框:

Twin_Pair           zyg CDsumTwin1 CDsumTwin2
   <chr>             <int>      <dbl>      <dbl>
 1 pair1(2891,2892)      2          0          5
 2 pair2(4000,4001)      1          0          0
 3 pair3(4006,4007)      2          0          3
 4 pair4(4009,4010)      2          1          3
 5 pair5(4012,4013)      2          2          0
 6 pair6(4015,4016)      2          0          9
 7 pair7(4018,4019)      2          0          0
 8 pair8(4021,4022)      1          0          0
 9 pair9(4024,4025)      1          0          0
10 pair10(4027,4028)     2          2         17

如何从第一列的每一行中删除“pair1”、“pair2”等,以便留下类似 (4027,4028) 的内容?我知道如何删除前 5 个字符,但问题是 pair100。什么是一种有效的方法来做到这一点?

标签: rdataframe

解决方案


您需要一个正则表达式调用来识别您的模式。请测试此代码以查看它是否有效。

dat$Twin_Pair <- sub("^pair[0-9]+", "", dat$Twin_Pair)
dat
#      Twin_Pair zyg CDsumTwin1 CDsumTwin2
# 1  (2891,2892)   2          0          5
# 2  (4000,4001)   1          0          0
# 3  (4006,4007)   2          0          3
# 4  (4009,4010)   2          1          3
# 5  (4012,4013)   2          2          0
# 6  (4015,4016)   2          0          9
# 7  (4018,4019)   2          0          0
# 8  (4021,4022)   1          0          0
# 9  (4024,4025)   1          0          0
# 10 (4027,4028)   2          2         17

数据

dat <- read.table(text = "Twin_Pair           zyg CDsumTwin1 CDsumTwin2
 1 'pair1(2891,2892)'      2          0          5
 2 'pair2(4000,4001)'      1          0          0
 3 'pair3(4006,4007)'      2          0          3
 4 'pair4(4009,4010)'      2          1          3
 5 'pair5(4012,4013)'      2          2          0
 6 'pair6(4015,4016)'      2          0          9
 7 'pair7(4018,4019)'      2          0          0
 8 'pair8(4021,4022)'      1          0          0
 9 'pair9(4024,4025)'      1          0          0
10 'pair10(4027,4028)'     2          2         17",
                  header = TRUE)

推荐阅读