gpt4 book ai didi

r - 在 R 中遍历数据框时如何引用上一行/下一行?

转载 作者:行者123 更新时间:2023-12-05 07:57:32 24 4
gpt4 key购买 nike

我有一个看起来像这样的数据集(我在这里稍微简化了一下):

第一列有一个用户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))
}

虽然这种方法是有限的,因为我只能引用我的数据框中的单个列。这里有什么更好的解决方案?我试过:

  • for (row in data) 然后按 row[column_number] 和 row['column_name'] 引用列无济于事
  • 我还尝试了 (i in 1:nrow(data)) 然后使用 data[i,column_number] 引用列,但也没有用(这应该行得通吧?)我想如果这个方法行得通我可以使用 i-1 和 i+1 访问其他行!我知道这不是在 R 中做事的传统方式,但如果您仍能提供有关如何以这种方式做事的解释,我将不胜感激。

第 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com