【发布时间】:2016-06-11 13:12:58
【问题描述】:
这确实是一个相当棘手的问题。如果有人能够帮助我,那就太棒了。
我正在尝试做的是以下内容。我在 R 中有一个数据框,其中包含给定状态下的每个位置,从 Wikipedia 中抓取。它看起来像这样(前 10 行)。我们就叫它NewHampshire.df:
Municipality County Population
1 Acworth Sullivan 891
2 Albany Carroll 735
3 Alexandria Grafton 1613
4 Allenstown Merrimack 4322
5 Alstead Cheshire 1937
6 Alton Belknap 5250
7 Amherst Hillsborough 11201
8 Andover Merrimack 2371
9 Antrim Hillsborough 2637
10 Ashland Grafton 2076
我进一步编译了一个名为grep_term 的新变量,它将Municipality 和County 中的值组合成一个新的变量,用作or 语句,如下所示:
Municipality County Population grep_term
1 Acworth Sullivan 891 "Acworth|Sullivan"
2 Albany Carroll 735 "Albany|Carroll"
等等。此外,我还有另一个数据集,其中包含 2000 个 Twitter 用户的自我披露位置。我叫它location.df,看起来有点像这样:
[1] "London" "Orleans village VT USA" "The World"
[4] "D M V Towson " "Playa del Sol Solidaridad" "Beautiful Downtown Burbank"
[7] NA "US" "Gaithersburg Md"
[10] NA "California " "Indy"
[13] "Florida" "exsnaveen com" "Houston TX"
我想做两件事:
1:对location.df 数据集中的每个观察结果进行Grepl,并将TRUE 或FALSE 保存到新变量中,具体取决于自我披露的位置是否在第一个数据集中的列表中。
2:将NewHampshire.df 数据集中特定行的匹配数保存到新变量中。即,如果 twitter 位置数据集中有 4 个 Acworth 匹配项,则 NewHampshire.df 中新创建的“matches”变量上的观察值 1 应该有一个值“4”
到目前为止我做了什么:我已经解决了任务1,如下:
for(i in 1:234){
location.df$isRelevant <- sapply(location.df$location, function(s) grepl(NH_Places[i], s, ignore.case = TRUE))
}
如何解决任务 2,最好是在同一个 for 循环中?
提前致谢,任何帮助将不胜感激!
【问题讨论】:
-
您用于解决任务 1 的代码将写入
location.df$isRelevant234 次,只有最后写入的代码才会保留。因此,删除循环并将i替换为 234 将得到相同的结果,这可能不是您想要的。