- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据集,其中一列包含姓名,一列指示该人白天做了什么。我正在尝试使用 R 找出那天在我的数据集中谁会见了谁。我创建了一个包含数据集中名称的向量,并在循环中使用 grepl 来确定名称出现在详细说明人们事件的列中的位置在数据集中。
name <- c("Dupont","Dupuy","Smith")
activity <- c("On that day, he had lunch with Dupuy in London.",
"She had lunch with Dupont and then went to Brighton to meet Smith.",
"Smith remembers that he was tired on that day.")
met_with <- c("Dupont","Dupuy","Smith")
df<-data.frame(name, activity, met_with=NA)
for (i in 1:length(met_with)) {
df$met_with<-ifelse(grepl(met_with[i], df$activity), met_with[i], df$met_with)
}
然而,由于两个原因,该解决方案并不令人满意。当这个人遇到一个以上的人时,我不能提取一个以上的名字(在我的例子中是 Dupuy),我不能告诉 R 在我的名字中使用这个名字而不是代词时不要返回这个人的名字事件列(例如史密斯)。
name activity met_with
Dupont On that day, he had lunch with Dupuy in London. Dupuy
Dupuy She had lunch with Dupont and then (...). Dupont Smith
Smith Smith remembers that he was tired on that day. NA
我正在清理字符串以构建边缘列表和节点列表,以便稍后进行网络分析。
最佳答案
与@Gki 相同的逻辑,但使用 stringr
函数和 mapply
而不是循环。
library(stringr)
pat <- str_c('\\b', df$name, '\\b', collapse = '|')
df$met_with <- mapply(function(x, y) str_c(setdiff(x, y), collapse = ' '),
str_extract_all(df$activity, pat), df$name)
df
# name activity
#1 Dupont On that day, he had lunch with Dupuy in London.
#2 Dupuy She had lunch with Dupont and then went to Brighton to meet Smith.
#3 Smith Smith remembers that he was tired on that day.
# met_with
#1 Dupuy
#2 Dupont Smith
#3
关于r - 使用带有 grepl 和循环的名称列表从字符串中提取名称,并将它们添加到 R 中的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68286245/
我希望这段代码返回一个包含 26 个 TRUE 的向量,但它返回的都是 FALSE。 grepl(".*", LETTERS, fixed=T) 从文档中,“grepl 返回一个逻辑向量(匹配或不匹配
我想在我的数据框中创建一个新列,该列是 TRUE 还是 FALSE,具体取决于术语是否出现在两个指定的列中。 这是一些示例数据: AB M AB
我有一个格式如下所示的数据框: String Keyword 1 Apples bananas mangoes
我想在两个向量上应用 grepl 以查看第一个向量的元素是否在第二个向量的相应元素中可用。例如 grepl(c("bc","23","a2"),c("abcd","1234","zzzz")) 由于
我正在做一些看似非常简单的事情。我想使用 grepl() 命令——或类似的命令——在几个不同的短语上对 R 中的数据帧进行子集化,而不构建循环。 例如,我想提取名为 Bob 或 Mary 的任何人的所
我在将 grepl 与正则表达式结合使用时遇到困难。 这是一个小例子: 我有一个字符向量: text D_.+ | \\>F_.+", text) grepl("\\D_.+ | \\F_.+", t
看来,虽然grep具有反转参数,但 grepl 没有。 我想为使用2个过滤器的子集 data$ID[grepl("xyx", data$ID) & data$age>60] 如何为年龄大于60且ID为
我希望根据条件连接两个数据帧,在本例中,一个字符串在另一个字符串中。假设我有两个数据框, df1 % # Format resulting dataset as you requested.
我希望根据条件连接两个数据帧,在本例中,一个字符串在另一个字符串中。假设我有两个数据框, df1 % # Format resulting dataset as you requested.
我在 R 中使用 grepl() 将模式与字符串进行匹配。 我需要将多个字符串与一个公共(public)字符串匹配,如果它们全部匹配,则返回 TRUE。 例如: a <- 'DEARBORN TRUC
我需要使用另一个数据框按列过滤数据框,但由于匹配不准确,我想使用 grepl 是一种方法。 下面的代码可以作为例子: A % filter(.,grepl("RT",X)) # the result
我有一个数据框 (df),其中包含州和城市的 2 列数据。但是,有时 2 列中的数据会被调换或输入错误。数据框看起来像这样: location state Bangkok
目前我正在使用带有 grepl 的嵌套 ifelse 函数来检查与数据框中的字符串向量是否匹配,例如: # vector of possible words to match x my_text$n
我使用 grepl 检查字符串是否包含一组模式中的任何模式(我使用“|”来分隔模式)。反向搜索没有帮助。如何识别匹配的模式集? 附加信息:这可以通过编写一个循环来解决,但它非常耗时,因为我的集合有 >
我有一个包含列名和行名的数据,其中包含一个从 1 到 100 的数字的字符串。 我正在使用 grepl 来选择具有特定数字的名称(同时忽略字符串)。说我有: a <- matrix(c(1:16),
我有一个数据(大数据 125000 行,~20 MB),其中一些具有特定字符串的行需要删除,并且在读取过程中需要选择一些列。 首先,我发现grepl功能无法正常工作,因为 fread将数据作为此 qu
这个问题在这里已经有了答案: R regex to find two words same string, order and distance may vary (2 个回答) 去年关闭。 grep
我的数据框如下所示。我需要根据“geneID”列的名称一一提取特定行的数据。我使用 grepl 函数。 #Data frame:geneDf geneID=c("EGFR","Her2","PTEN
我有一个数据集(名为桌面),其中包含来自网络跟踪器的按时间顺序排列的信息,其中包含一列中不同用户访问的 URL 和另一列中的用户 ID。以搜索引擎分析为目标,我试图过滤所有包含用户向谷歌提交搜索查询的
让我们考虑一个包含两列word 和stem 的df。我想创建一个新列来检查 stem 中的值是否包含在 word 中,以及它前面或后面是否有更多字符。最终结果应该是这样的: WORD STEM
我是一名优秀的程序员,十分优秀!