簡體   English   中英

如何從數據框的一列中的所有行中刪除特定字符

[英]How to remove a specific character from all the rows in one column of a dataframe

我有一個包含兩列和幾百行的數據框,我們稱它為df ,它看起來像這樣-

Name                 Chemical_Formula
PALMITYL-COA         C37H62N7O17P3S1
CPD0-888             C34H52N7O24P2
3-OXOPALMITOYL-COA   C37H60N7O18P3S1
OH-MYRISTOYL         C43H75N3O20P2
CPD-19171            C39H64N7O18P3S1
CPD-15253            C52H99N3O13P2
CPD-12122            C75H112O2
CPD0-937             C149H260N2O78P4
....                 .....
....                 .....

現在,如果某些化合物的Chemical_Formula1結尾,我想從化學式中刪除該1 例如,對於第一種化合物PALMITYL-COA其化學式為C37H62N7O17P3S1 ,其結尾為1 因此,在新數據框中,我希望第一個化合物的化學式為C37H62N7O17P3S

因此,我的新數據框應如下所示-

Name                 Chemical_Formula
PALMITYL-COA         C37H62N7O17P3S
CPD0-888             C34H52N7O24P2
3-OXOPALMITOYL-COA   C37H60N7O18P3S
OH-MYRISTOYL         C43H75N3O20P2
CPD-19171            C39H64N7O18P3S
CPD-15253            C52H99N3O13P2
CPD-12122            C75H112O2
CPD0-937             C149H260N2O78P4
....                 .....
....                 .....

如果它們不以數字1結尾,我想保留所有化學式。 1結尾的那些我只想刪除那個1,保持公式的其余部分不變。

我一直在尋找使用gsub sub greplsubset函數執行此操作的方法,但不太確定要使用正則表達式規則指定哪種模式。 請幫忙!

這是如何做

df$Chemical_Formula <- gsub("1$", "", df$Chemical_Formula)

1后面的美元符號表示字符串的結尾。 表示僅將位於末尾的1刪除

以下內容可能會對您有所幫助。 我在哪里使用基R sub替換函數刪除1如果它在元素的結尾為id且為NULL)。

sub("1$","",df$Chemical_Formula)

要將輸出保存到同一列中,也可以在上面的代碼中使用df$Chemical_Formula <-

代碼說明:

subsub是base R的函數,可用於sub(regex_needs_to_be_used_to_replace_present_content,"with_new_content",variable)

"1$" :表示告訴sub僅對df名為Chemical_Formula的列以1結尾的行進行操作(我將在后面進一步解釋)

"" :如果在任何值中都找到上述匹配項,則根據OP的請求,將行的結尾1替換為NULL。

df$Chemical_Formula :名為df的列,名為Chemical_Formula數據框

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM