使用dataframe中的两行计算序列匹配数
我们可以使用以下代码筛选满足要求的行<代码>导程可以向前移动整个矢量。这个数据集的答案是三使用dataframe中的两行计算序列匹配数,r,dataframe,sequence,R,Dataframe,Sequence,我们可以使用以下代码筛选满足要求的行导程可以向前移动整个矢量。这个数据集的答案是三 S=Excel_bestand_schapen seq=c("stilstaan", "ruiken") library(zoo) result=rollapply(S, 2, identical, seq) length(result[result == TRUE]) 库(dplyr) dat2% 过滤器(代码%in%“Stistaan”&铅(代码)%in%“ruiken”&铅(修改器)%in%“aa
S=Excel_bestand_schapen
seq=c("stilstaan", "ruiken")
library(zoo)
result=rollapply(S, 2, identical, seq)
length(result[result == TRUE])
库(dplyr)
dat2%
过滤器(代码%in%“Stistaan”&铅(代码)%in%“ruiken”&铅(修改器)%in%“aan对象”)
nrow(dat2)
# [1] 3
数据
library(dplyr)
dat2 <- dat %>%
filter(code %in% "stilstaan" & lead(code) %in% "ruiken" & lead(Modifier) %in% "aan object")
nrow(dat2)
# [1] 3
dat使用base R和www的dat数据帧:
dat <- read.table(text = " Tijd 'nummer schaap' code Modifier comment status
1 2.971 1 stilstaan NA NA START
2 5.457 1 ruiken 'aan object' NA POINT
3 10.703 1 stilstaan NA NA STOP
4 10.704 1 lopen NA NA START
5 12.959 1 lopen NA NA STOP
6 12.960 1 stilstaan NA NA START
7 22.732 1 ruiken 'aan object' NA POINT
8 29.383 1 stilstaan NA NA STOP
9 29.384 1 lopen NA NA START
10 42.568 1 lopen NA NA STOP
11 42.569 1 ruiken 'aan object' NA POINT
12 49.206 1 lopen NA NA START
13 66.533 1 lopen NA NA STOP
14 66.534 1 stilstaan NA NA START
15 67.134 1 ruiken 'aan object' NA POINT
16 72.999 1 stilstaan NA NA STOP
17 73.000 1 lopen NA NA START
18 77.480 1 lopen NA NA STOP
19 77.481 1 stilstaan NA NA START
20 81.773 1 rondkijken NA NA START",
header = TRUE, stringsAsFactors = FALSE)
可以将相关列折叠为单个字符串
sum(ifelse((dat$code == "stilstaan") &
(c(dat$code[2:length(dat$code)], NA) == "ruiken") &
(c(dat$Modifier[2:length(dat$Modifier)], NA) == "aan object"),
1, 0))
ruiken
是否总是遵循stilstaan
,ruiken
是否总是有一个修饰符aan对象
?您是否可以发布dput(head(df,10))
的结果,以便更容易复制您的数据?谢谢,这非常有效!如果将来需要的话,我甚至可以使用2个修饰符,这段代码对其他将来的项目也非常有用
sum(ifelse((dat$code == "stilstaan") &
(c(dat$code[2:length(dat$code)], NA) == "ruiken") &
(c(dat$Modifier[2:length(dat$Modifier)], NA) == "aan object"),
1, 0))
collapse <- paste(paste(dat$code, dat$Modifier), collapse=" ")
# [1] "stilstaan NA ruiken aan object stilstaan NA lopen ...
pattern <- "stilstaan NA ruiken aan object"
stringr::str_count(pattern, collapse)
# 3