在 R 中,比较数据框中 2 行的 2 个字段

In R, comparing 2 fields across 2 rows in a dataframe

我正在尝试比较 R 中数据帧上连续行的 2 个不同字段,并指出不同的字段。以下是输入数据:-

 Start    End
1 Atl      Bos    
2 Bos      Har  
3 Har      NYC  
4 Stf      SFO
5 SFO      Chi

我正在尝试建立一个移动链,如果终点与下一行的起点不匹配,我想指出该行。所以对于上面的内容,我会指出第 4 行如下:-

 Start    End    Ind
1 Atl      Bos   Y 
2 Bos      Har   Y
3 Har      NYC   Y
4 Stf      SFO   N
5 SFO      Chi   Y

我是 R 的新手,我曾尝试查找此问题,但似乎找不到解决方案。感谢任何帮助。

另一种选择是:

> Ind <- as.character(dat$Start[-1]) == as.character(dat$End [-length(dat$End)])
> dat$Ind <- c(NA, ifelse(Ind==TRUE, "Y", "N")) 
> dat
  Start End  Ind
1   Atl Bos <NA>
2   Bos Har    Y
3   Har NYC    Y
4   Stf SFO    N
5   SFO Chi    Y

请注意,您的第一项应该是 <NA>

您可以通过 dplyr 使用 mutatelead 来做到这一点。请注意,最后一项应该是 NA,因为没有第 6 行可以与 SFO-CHI 进行比较。

library(dplyr)
df1  <- read.table(text=" Start    End
Atl      Bos
Bos      Har
Har      NYC
Stf      SFO
SFO      Chi", header=TRUE, stringsAsFactors=FALSE)

df1 %>%
mutate(Ind=ifelse(End==lead(Start),"Y","N"))

  Start End  Ind
1   Atl Bos    Y
2   Bos Har    Y
3   Har NYC    N
4   Stf SFO    Y
5   SFO Chi <NA>