列中的 R 部分 gsub

标签 r regex dataframe gsub

我有一个关于如何为 df 的第一列部分 gsub 的问题。我可以删除冒号后的所有字符串,但我想保留以 19 开头的行的信息。

df$V1:

rs1231243:G:T:0
rs483294:C:T:5098723
19:4783234:T:G
rs19873423:A:C
19:83947355:C:T
kpg897324
rs3287492:G:C

Desired output:

rs1231243
rs483294
19:4783234:T:G
rs19873423
19:83947355:C:T
kpg897324
rs3287492

code:
df$V1 <- gsub("\\:.*","",df$V1)

我不知道如何有条件地 gsub 或其他方法。请指教。谢谢。

最佳答案

你可以使用否定。前瞻:

gsub("^(?!19)([^:]+).*", "\\1", df$V1, perl = T)

参见 a demo on regex101.com .


这产生了

df["V2"] <- gsub("^(?!19)([^:]+).*", "\\1", df$V1, perl = T)
df
                    V1              V2
1      rs1231243:G:T:0       rs1231243
2 rs483294:C:T:5098723        rs483294
3       19:4783234:T:G  19:4783234:T:G
4       rs19873423:A:C      rs19873423
5      19:83947355:C:T 19:83947355:C:T
6            kpg897324       kpg897324
7        rs3287492:G:C       rs3287492

关于列中的 R 部分 gsub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50403720/

相关文章:

regex - 使用正则表达式捕获 Jenkins 管道中的数据

r - 当列名是字符串时,转换为long并制作频数表,R

r - 列表中按名称排列的数据帧值的平均值

r - 无法保存 - 在 R 中加载从 rvest 生成的 xml_document

r - iconv() 在给定具有特定特殊字符的字符串时返回 NA

c++ - 在 C++ 项目中设置 R (C api)

c# - 用于检查文件内容类型的正则表达式是否为 .doc?

java - 模式不允许包含数字的单词?

python - 如果我有多个字段分组,如何从 Dask DataFrameGroupBy 获取所有分组?

python-3.x - 将移位计数有效地应用于 DataFrame