【发布时间】:2013-05-23 05:35:08
【问题描述】:
我有这个数据框:
data <- data.frame(countries=c(rep('UK', 5),
rep('Netherlands 1a', 5),
rep('Netherlands', 5),
rep('USA', 5),
rep('spain', 5),
rep('Spain', 5),
rep('Spain 1a', 5),
rep('spain 1a', 5)),
var=rnorm(40))
countries var
1 UK 0.506232270
2 UK 0.976348808
3 UK -0.752151769
4 UK 1.137267199
5 UK -0.363406715
6 Netherlands 1a -0.800835463
7 Netherlands 1a 1.767724231
8 Netherlands 1a 0.810757929
9 Netherlands 1a -1.188975114
10 Netherlands 1a -0.763144245
11 Netherlands 0.428511920
12 Netherlands 0.835184425
13 Netherlands -0.198316780
14 Netherlands 1.108191193
15 Netherlands 0.946819500
16 USA 0.226786121
17 USA -0.466886468
18 USA -2.217910876
19 USA -0.003472937
20 USA -0.784264921
21 spain -1.418014562
22 spain 1.002412706
23 spain 0.472621627
24 spain -1.378960222
25 spain -0.197020702
26 Spain 1.197971896
27 Spain 1.227648883
28 Spain -0.253083684
29 Spain -0.076562960
30 Spain 0.338882352
31 Spain 1a 0.074459521
32 Spain 1a -1.136391220
33 Spain 1a -1.648418916
34 Spain 1a 0.277264011
35 Spain 1a -0.568411569
36 spain 1a 0.250151646
37 spain 1a -1.527885883
38 spain 1a -0.452190849
39 spain 1a 0.454168927
40 spain 1a 0.889401396
我希望能够找到不止一次以不同形式出现的countries 级别。 countries 级别可能出现的表单有:
- 小写,例如“西班牙”
- 标题大写,例如“西班牙”
- 小写字母,附加不同的单词,例如“spain 1a”
- 附加了不同单词的标题,例如“Spain 1a”
所以我需要返回一个向量列表级别countries,它出现了不止一次。在data中,应该返回的向量是:
"Netherlands 1a", "Netherlands", "spain", "Spain", "spain 1a", "Spain 1a"
是否可以创建一个返回该向量的函数?
【问题讨论】:
-
您可能想使用正则表达式来清理您的数据。请参阅。例如
?grep或?sub,并在在线教程中阅读正则表达式。 -
国家名称是否包含空格?如果没有,您可以安全地丢弃第一个空格之后的字符串的任何部分。