[英]r Remove parts of column name after special characters
問題
我有一個 dataframe,我在其中嘗試重命名具有多個特殊字符、不同位數並且還包括正數和負數的列條目,如下例所示。
Name Number
A -500--550
B -600--650
C -700--750
D -8000--8500
E -9000--9500
F -100-200
G 200-400
這些條目是日期范圍,中間的連字符應該表示“到”,因此“A”將被讀作“負 500 到負 550”; “F”將被讀作“負 100 到(正)200”; G 將被讀作“(200 到 400)。
在許多條目的開頭有一個“-”,在中間有一個“--”和不同的數字使事情變得有點復雜。 對於我的最終結果,我想刪除“to”破折號和之后的所有內容。 最終結果應如下所示:
Name Number
A -500
B -600
C -700
D -8000
E -9000
F -100
G 200
dplyr 方法會很棒,但只要它有效,我就不會特別挑剔。
類似問題
我發現了一些接近提供答案的類似問題,但數據集的差異導致了問題。
在這個例子中,他們在點“.”之后有不同的位數,並使用 gsub 來解決這個問題。 刪除列標題中“.”之后的字符
colnames(df) <- gsub("\\..*$", "", colnames(df))
在另一個例子中,他們有多個點“。” 並想刪除最后一個“。”。 刪除(或替換)R 字符串中指定字符后的所有內容
其中一種方法使用了 stringr,如下所示。
library(stringr)
str_remove(x, "\\.[^.]*$")
這里的問題是,對於許多條目,我想從第二個“-”開始刪除,但這對行“F”或“G”不起作用
str_remove(testing$Number, "\\--[^-]*$")
[1] "-500" "-600" "-700" "-8000" "-9000" "-100-200" "200-400"
樣本數據
我在下面提供了一個示例測試集。
structure(list(Name = c("A", "B", "C", "D", "E", "F", "G"), Number = c("-500--550",
"-600--650", "-700--750", "-8000--8500", "-9000--9500", "-100-200",
"200-400")), class = "data.frame", row.names = c(NA, -7L))
我會替換模式-+\d+$
:
testing$Number <- sub("-+\\d+$", "", testing$Number)
這是一個有效的正則表達式演示。
這里使用的正則表達式表示匹配:
-+
一個或多個破折號\d+
后跟一位或多位數字$
值的結尾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.