作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个看起来像这样的数据集(我在这里稍微简化了一下):
第一列有一个用户id
第 2 列有一个 url 标题
第 3 列有一个实际的 url
数据已经按用户和时间排序。所以它的用户 1 和他们访问的所有 URL 按时间升序排列,然后是用户 2 和他们访问的 URL 按时间升序排列等等
我想做的是遍历数据集并寻找“三元组”,其中第一行 url 不包含我的关键字(比如 google 或 facebook 或 nytimes 或其他),第二行 url 包含我的关键字,第三行不包含我的关键字。基本上是检查用户在任何特定网站之前和之后访问了哪些网站。
我发现我可以使用以下方法查找关键字:
if(length(grep("facebook",url)) > 0)
但我一直无法弄清楚如何遍历代码并实现我想要做的事情。
如果您能将您的回复分为两部分,我将不胜感激:
第 1 部分:是否有任何方法可以遍历数据框并访问所有列?我能够使用此代码处理单个列:
new_data <- data.frame (url)
for (url in data$url)
if(length(grep("keyword",url)) > 0) {
new_data <- rbind(new_data,data.frame(url = url))
}
虽然这种方法是有限的,因为我只能引用我的数据框中的单个列。这里有什么更好的解决方案?我试过:
第 2 部分:如前所述,我如何实现我的实际目标?我想学习以“R 方式”进行操作;我想它会涉及 plyr 或 lapply,但即使在广泛阅读之后我也没有设法弄清楚如何使用这些函数,更不用说使用它们并包括对上一行/下一行的引用了。
在此先感谢您的帮助,如有任何指导,我们将不胜感激!
最佳答案
使用[-1]
:
last <- nrow(df)
penu <- nrow(df) - 1
df$ContainsKeyword <- FALSE
df$ContainsKeyword[grep("keyword", df$url)] <- TRUE
df$TripletFound <- NA
for (i in 2:penu){
df$TripletFound[i] <- {df$ContainsKeyword[i-1] & df$ContainsKeyword[i+1]} & {!df$ContainsKeyword[i]}
}
关于r - 在 R 中遍历数据框时如何引用上一行/下一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26876859/
我是一名优秀的程序员,十分优秀!