[英]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>
您可以使用mutate
和lead
使用dplyr
做到这dplyr
。 请注意,最后一项应为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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.