如何解决在任何有空格的单词周围加上“”
我有一些文本数据(dat
),其中一个变量State
可以由一些单词和一些空格组成,例如New York
。
要正确读取数据,我需要在整个dat
中的所有 string 元素中留有空格,以将它们放在单引号中,例如: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!
解决方法
如果它基于“状态”列的模式,则我们可以为不包含数字的单词插入''
(\\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
如果列在不同位置,则提及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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。