删除之前的数字
Removing numbers before
我有一个客户名单的数据集。类型因子 (Kunden.Nr..Kurzname) 的第一列在实际客户名称之前始终有一个数字(范围从 1 到 4 位数字),我想将其删除。数据集目前看起来是这样的:
Kunden.Nr..Kurzname Name..Vorname Adresse Postfach PLZ
1 1529 33ER TAXI AG 33er Taxi AG Jägerstrasse 5 <NA> 4016
2 2384 4EYES GMBH 4eyes GmbH Grubenweg 25 <NA> 4153
3 1548 A. SCHULMANN AG A. Schulmann AG Kernstrasse 10 <NA> 8004
4 3427 AAA DENT AG AAA Dent AG Die Zahnärzte.ch Centralbahnstrasse 20 4051
5 555 AARE SEELAND MOB Aare Seeland mobil AG Hauptstrasse 93 <NA> 2560
6 856 AASTRA TELECOM S Aastra Telecom Schweiz AG Schulhausgasse 24 <NA> 3113
我想要这样:
Kunden.Nr..Kurzname Name..Vorname Adresse Postfach PLZ
1 33ER TAXI AG 33er Taxi AG Jägerstrasse 5 <NA> 4016
2 4EYES GMBH 4eyes GmbH Grubenweg 25 <NA> 4153
3 A. SCHULMANN AG A. Schulmann AG Kernstrasse 10 <NA> 8004
4 AAA DENT AG AAA Dent AG Die Zahnärzte.ch Centralbahnstrasse 20 4051
5 AARE SEELAND MOB Aare Seeland mobil AG Hauptstrasse 93 <NA> 2560
6 AASTRA TELECOM S Aastra Telecom Schweiz AG Schulhausgasse 24 <NA> 3113
基本上,我需要删除第一个 space 之前的所有内容,包括第一个 space。想通了大概要用"gsub",可惜好久没用R了。非常感谢您的帮助。
我建议使用群组:
gsub("^(\d+)([[:space:]])(.+)$","\3",x)
例如:
> x <- c("1529 33ER TAXI AG", "2384 4EYES GMBH")
> gsub("^(\d+)([[:space:]])(.+)$","\3",x)
[1] "33ER TAXI AG" "4EYES GMBH"
演示
说明
由 regex101.com 提供。
之前的所有答案都有点过载。这是一个建议,它有点直截了当,并且可以按照您的要求做所有事情。
DF <- #your data.frame
FindFirstSpace <- regexpr(" ", DF$Kunden.Nr..Kurzname, fixed = TRUE)
DF$Kunden.Nr..Kurzname <- substr(DF$Kunden.Nr..Kurzname, FindFirstSpace + 1, 1000)
regexpr
returns 字符向量中“ ”的第一个实例。请注意,regexpr
用于查找表达式 "like" 您的模式。但是 fixed = TRUE
使搜索更加具体。
然后从第一个 space 之后取出子串。对于 stop
值,您可以取任何足够大的数字。
你可以简单地做 gsub("^[0-9]{1,4}\s","",df$Kunden.Nr..Kurzname)
我有一个客户名单的数据集。类型因子 (Kunden.Nr..Kurzname) 的第一列在实际客户名称之前始终有一个数字(范围从 1 到 4 位数字),我想将其删除。数据集目前看起来是这样的:
Kunden.Nr..Kurzname Name..Vorname Adresse Postfach PLZ
1 1529 33ER TAXI AG 33er Taxi AG Jägerstrasse 5 <NA> 4016
2 2384 4EYES GMBH 4eyes GmbH Grubenweg 25 <NA> 4153
3 1548 A. SCHULMANN AG A. Schulmann AG Kernstrasse 10 <NA> 8004
4 3427 AAA DENT AG AAA Dent AG Die Zahnärzte.ch Centralbahnstrasse 20 4051
5 555 AARE SEELAND MOB Aare Seeland mobil AG Hauptstrasse 93 <NA> 2560
6 856 AASTRA TELECOM S Aastra Telecom Schweiz AG Schulhausgasse 24 <NA> 3113
我想要这样:
Kunden.Nr..Kurzname Name..Vorname Adresse Postfach PLZ
1 33ER TAXI AG 33er Taxi AG Jägerstrasse 5 <NA> 4016
2 4EYES GMBH 4eyes GmbH Grubenweg 25 <NA> 4153
3 A. SCHULMANN AG A. Schulmann AG Kernstrasse 10 <NA> 8004
4 AAA DENT AG AAA Dent AG Die Zahnärzte.ch Centralbahnstrasse 20 4051
5 AARE SEELAND MOB Aare Seeland mobil AG Hauptstrasse 93 <NA> 2560
6 AASTRA TELECOM S Aastra Telecom Schweiz AG Schulhausgasse 24 <NA> 3113
基本上,我需要删除第一个 space 之前的所有内容,包括第一个 space。想通了大概要用"gsub",可惜好久没用R了。非常感谢您的帮助。
我建议使用群组:
gsub("^(\d+)([[:space:]])(.+)$","\3",x)
例如:
> x <- c("1529 33ER TAXI AG", "2384 4EYES GMBH")
> gsub("^(\d+)([[:space:]])(.+)$","\3",x)
[1] "33ER TAXI AG" "4EYES GMBH"
演示
说明
由 regex101.com 提供。
之前的所有答案都有点过载。这是一个建议,它有点直截了当,并且可以按照您的要求做所有事情。
DF <- #your data.frame
FindFirstSpace <- regexpr(" ", DF$Kunden.Nr..Kurzname, fixed = TRUE)
DF$Kunden.Nr..Kurzname <- substr(DF$Kunden.Nr..Kurzname, FindFirstSpace + 1, 1000)
regexpr
returns 字符向量中“ ”的第一个实例。请注意,regexpr
用于查找表达式 "like" 您的模式。但是 fixed = TRUE
使搜索更加具体。
然后从第一个 space 之后取出子串。对于 stop
值,您可以取任何足够大的数字。
你可以简单地做 gsub("^[0-9]{1,4}\s","",df$Kunden.Nr..Kurzname)