rno*_*ian 1 regex string r function dataframe
我有一些文本数据 ( dat
),其中一个变量State
, 可以包含一些单词和一些空格,例如New York
.
为了正确读取数据,我需要将整个字符串中的任何字符串元素dat
放在单引号中,如下所示:New York
--> 'New York'
。
我想知道这是否有可能实现?
dat <-
"State Expend PTratio Salary PctSAT SAT PctACT ACT
Montana 5.692 16.3 28.785 21 1009 55 21.9
New York 9.774 13.8 46.087 70 898 3 20.8
"
# EXAMPLE OF USE:
read.table(text = dat, header = T) # Error! But if we use 'New York' works fine!
Run Code Online (Sandbox Code Playgroud)
如果它是基于列“国家”的模式,那么我们可以插入''
用于不包括数字(的话\\D+
),捕获为一组,后面跟一个空格和一个或多个数字((\\d+)
-捕捉为第二组),在 中replacement
,指定被捕获组的反向引用(\\1
, \\2
),并在第一个捕获组周围插入引号
read.table(text = gsub("\n(\\D+\\s*\\D+) (\\d+)",
"\n'\\1' \\2", dat), header = TRUE)
# State Expend PTratio Salary PctSAT SAT PctACT ACT
#1 Montana 5.692 16.3 28.785 21 1009 55 21.9
#2 New York 9.774 13.8 46.087 70 898 3 20.8
Run Code Online (Sandbox Code Playgroud)
OP 提到了该列是否位于不同的位置。这里我们使用模式,即如果列在第 n 个位置并且直接邻居是数字,则使用它来创建模式
dat1 <- "Expend PTratio Salary PctSAT SAT State PctACT ACT\n5.692 16.3 28.785 21 1009 Montana 55 21.9\n 9.774 13.8 46.087 70 898 New York 3 20.8\n"
read.table(text = gsub("(\\d+)\\s+([A-Za-z ]+) (\\d+)",
"\\1 '\\2' \\3", dat1), header = TRUE)
# Expend PTratio Salary PctSAT SAT State PctACT ACT
#1 5.692 16.3 28.785 21 1009 Montana 55 21.9
#2 9.774 13.8 46.087 70 898 New York 3 20.8
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
63 次 |
最近记录: |