[英]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.