小编ani*_*kaM的帖子

如何从R中的字符串中提取数字?

我有一个这样的数据框:

    > dns1
               variant_id         gene_id pval_nominal
21821  chr1_165656237_T_C_b38 ENSG00000143149  1.24119e-05
21822 chr1_165659346_C_CA_b38 ENSG00000143149  1.24119e-05
21823  chr1_165659350_A_G_b38 ENSG00000143149  1.24119e-05
21824  chr1_165659415_A_G_b38 ENSG00000143149  1.24119e-05
21825  chr1_165660430_T_C_b38 ENSG00000143149  1.24119e-05
21826  chr1_165661135_T_G_b38 ENSG00000143149  1.24119e-05
21827  chr1_165661238_C_T_b38 ENSG00000143149  1.24119e-05
...
Run Code Online (Sandbox Code Playgroud)

我想从第二列(variant_id)中删除所有字符并只提取第二个数字,如下所示:

165656237
165659346
165659350
165659415
165660430
165661135
165661238
...
Run Code Online (Sandbox Code Playgroud)

我试过这个:

dns1$variant_id <- gsub('[^0-9.]','',dns1$variant_id)
Run Code Online (Sandbox Code Playgroud)

但是使用上面的命令我得到了这个:

> dns1
      variant_id         gene_id pval_nominal
21821    116565623738 ENSG00000143149  1.24119e-05
21822    116565934638 ENSG00000143149  1.24119e-05
21823    116565935038 ENSG00000143149  1.24119e-05
21824    116565941538 ENSG00000143149  1.24119e-05
...
Run Code Online (Sandbox Code Playgroud)

所以这匹配variant_id列中的所有数字,我需要得到16565623738而不是116565623738。所以问题是如何在第二列中匹配第二个数字?

regex r

1
推荐指数
2
解决办法
8467
查看次数

如何复制一列?

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

ENSG00000133789 11 9554976
ENSG00000131626 11 70272382
ENSG00000020922 11 94324686
ENSG00000102710 13 36925520
...
Run Code Online (Sandbox Code Playgroud)

我想复制第三列并得到这个:

ENSG00000133789 11 9554976 9554976
ENSG00000131626 11 70272382 70272382
ENSG00000020922 11 94324686 94324686
ENSG00000102710 13 36925520 36925520
...
Run Code Online (Sandbox Code Playgroud)

我尝试这样做:

cat out3 | awk '{ $3=$4; print; }'
Run Code Online (Sandbox Code Playgroud)

但我得到了:

ENSG00000133789 11 
ENSG00000131626 11 
ENSG00000020922 11 
ENSG00000102710 13 
...
Run Code Online (Sandbox Code Playgroud)

我的列是空格分隔的。我如何使这项工作?

编辑:

我通过以下方式解决了它:

awk -F' ' '{print $0" "$3}' out3 > out4
Run Code Online (Sandbox Code Playgroud)

bash awk sed

0
推荐指数
1
解决办法
408
查看次数

标签 统计

awk ×1

bash ×1

r ×1

regex ×1

sed ×1