I have a dataframe like this:
> 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
...
我希望删除第二列(variant_id)中的所有字符,并提取第二个数字,使其看起来像这样:
165656237
165659346
165659350
165659415
165660430
165661135
165661238
...
我尝试了这个:
dns1$variant_id <- gsub('[^0-9.]', '', dns1$variant_id)
但是使用上述命令我得到了这个结果:
> 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
...
这将匹配 variant_id 列中的所有数字,我需要得到 16565623738 而不是 116565623738。那么问题是如何仅匹配第二个数字?
gsub('_(.*)','', 'chr1_165656237_T_C_b38')
时,我得到的结果是"chr1"
。这不是你想要的,但我没有得到你报告的结果。 - Joseph Clark McIntyredput()
或其他我们可以复制/粘贴到 R 中的内容。了解数据的确切内容和存储方式非常重要。此外,请确保这是可重现的。当我运行代码时,我也会得到不同的结果。您一定有遗漏某些东西。 - MrFlick