R 如果后跟另一个单元格匹配项,则查找单元格匹配项
我有一个dataframe,它是使用R 如果后跟另一个单元格匹配项,则查找单元格匹配项,r,R,我有一个dataframe,它是使用pdftools从PDF转换而来的会议记录列表,其中包含一系列未列出的单词,如下所示: document\u id我们可以通过使用当前行和下一行(lead)以及sum逻辑向量创建一个逻辑表达式来计算“leave”后跟“明天”的实例数 library(dplyr) library(stringr) df %>% summarise(Sum = sum(str_detect(word, 'leave') & str_detect(
pdftools
从PDF转换而来的会议记录列表,其中包含一系列未列出的单词,如下所示:
document\u id我们可以通过使用当前行和下一行(lead
)以及sum
逻辑向量创建一个逻辑表达式来计算“leave”后跟“明天”的实例数
library(dplyr)
library(stringr)
df %>%
summarise(Sum = sum(str_detect(word, 'leave') &
str_detect(lead(word), 'tomorrow'), na.rm = TRUE))
通过使用当前行和下一行(lead
)以及sum
逻辑向量创建一个逻辑表达式,我们可以计算“leave”后跟“tomory”的实例数
library(dplyr)
library(stringr)
df %>%
summarise(Sum = sum(str_detect(word, 'leave') &
str_detect(lead(word), 'tomorrow'), na.rm = TRUE))
感谢@akrun回答这个问题。
对于阅读本文的其他人,我还编写了代码,根据Akrun的代码按日期聚合单词出现的实例:
leave_in_转录本%突变(match=str_-detect(单词“leave”)和str_-detect(lead(单词),“明天”)
在成绩单%filter中保留(匹配==“TRUE”)
在成绩单中留下$match谢谢@akrun的回答。
对于阅读本文的其他人,我还编写了代码,根据Akrun的代码按日期聚合单词出现的实例:
leave_in_转录本%突变(match=str_-detect(单词“leave”)和str_-detect(lead(单词),“明天”)
在成绩单%filter中保留(匹配==“TRUE”)
leave_in_transcripts$match在base R中,我们可以使用head
和tail
来匹配当前行和下一行的值。我们可以子集
匹配条件的行,并使用as.Date
将数据从文档id
转换为提供适当格式的日期对象。另外,由于您希望测试精确匹配而不是部分匹配,因此最好使用=
而不是grepl
transform(subset(df, c(head(word, -1) == "leave" &
tail(word, -1) == "tomorrow", FALSE)),
date = as.Date(document_id,"BOARD%Y%m%dmeeting.pdf"))
# document_id word date
#1 BOARD19810203meeting.pdf leave 1981-02-03
如果您只想计算满足上述条件的次数,我们可以使用sum
with(df, sum(head(word, -1) == "leave" & tail(word, -1) == "tomorrow"))
在baser中,我们可以使用head
和tail
来匹配当前行和下一行的值。我们可以子集
匹配条件的行,并使用as.Date
将数据从文档id
转换为提供适当格式的日期对象。另外,由于您希望测试精确匹配而不是部分匹配,因此最好使用=
而不是grepl
transform(subset(df, c(head(word, -1) == "leave" &
tail(word, -1) == "tomorrow", FALSE)),
date = as.Date(document_id,"BOARD%Y%m%dmeeting.pdf"))
# document_id word date
#1 BOARD19810203meeting.pdf leave 1981-02-03
如果您只想计算满足上述条件的次数,我们可以使用sum
with(df, sum(head(word, -1) == "leave" & tail(word, -1) == "tomorrow"))
是的,对不起。刚刚做完。明白了吗?两排都排好了。对不起!所以我的想法是,如果明天休假的话,我想数一数。因此,预期的输出应该只是一个重复的“leave”字符串,但当然只有在它后面跟着“tomory”时,我当前的代码才这样做。可能您需要使用lead
df%>%mutate(i1=str\u detect(word,'leave')&str detect(lead(word),'tomory'))
但正如我所说,我不清楚预期的输出,实际的列有170万行长。休假重复了大约1400次。所以我真的不知道如何修改我的代码来准确地反映我所拥有的。我只想计算一个单词的重复次数,如果它下面的单元格中有一个特定的单词。你知道怎么做吗?谢谢你的帮助!是的,对不起。刚刚做完。明白了吗?两排都排好了。对不起!所以我的想法是,如果明天休假的话,我想数一数。因此,预期的输出应该只是一个重复的“leave”字符串,但当然只有在它后面跟着“tomory”时,我当前的代码才这样做。可能您需要使用lead
df%>%mutate(i1=str\u detect(word,'leave')&str detect(lead(word),'tomory'))
但正如我所说,我不清楚预期的输出,实际的列有170万行长。休假重复了大约1400次。所以我真的不知道如何修改我的代码来准确地反映我所拥有的。我只想计算一个单词的重复次数,如果它下面的单元格中有一个特定的单词。你知道怎么做吗?谢谢你的帮助!感谢@akrun让其他人读到这篇文章,我还编写了代码来聚合单词出现的实例:leave_in_transcripts%mutate(match=str_detect(word,'leave')&str_detect(lead(word,'mounder'))
leave_in_transcripts%filter(match==“TRUE”)
leave_in_transcripts$match感谢@akrun阅读本文的其他人,我还编写了代码来聚合单词出现的实例:leave_in_transcripts%mutate(match=str_detect(word,'leave')&str detect(lead(word),'tomory'))
leave_in_transcripts%filter(match==“TRUE”)
在成绩单中留下$match