[英]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_Formula
以1
結尾,我想從化學式中刪除該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 grepl
或subset
函數執行此操作的方法,但不太確定要使用正則表達式規則指定哪種模式。 請幫忙!
這是如何做
df$Chemical_Formula <- gsub("1$", "", df$Chemical_Formula)
1后面的美元符號表示字符串的結尾。 表示僅將位於末尾的1刪除
以下內容可能會對您有所幫助。 我在哪里使用基R
sub
替換函數刪除1
如果它在元素的結尾為id且為NULL)。
sub("1$","",df$Chemical_Formula)
要將輸出保存到同一列中,也可以在上面的代碼中使用df$Chemical_Formula <-
。
代碼說明:
sub
: sub
是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.