R语言 检查任何两个后续行是否具有相同的值

fdbelqdn  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(103)

我有以下数据集:
| 色谱柱A|B栏|色谱柱C|
| --------------|--------------|--------------|
| 三|六|欧洲希腊|
| 五|七|欧洲希腊|
| 七|十一|欧洲比利时|
| 六|十二岁|欧洲比利时|
| 九|十三|欧洲克罗地亚|
我想实现的是,我想让R检查C列中的两个值是否相同,然后我想比较A列中的第二个值是否高于A列中的第一个值,并且B列中的值是否相同。如果C列中的值不相同,那么我想得到“N/A”而不是FALSE,因为A列和B列中的比较可能产生FALSE。
提前感谢您的帮助!

mpbci0fu

mpbci0fu1#

我相信这就是你要找的。
使用一系列ifelse语句:

  • 检查'C'中的下一行是否匹配,如果不匹配,则返回NA。
  • 如果为TRUE,则检查A和B中的下一行是否更大,如果不是,则返回FALSE。
library(dplyr)

df <- data.frame(
  A = c(3,5,7,6,9),
  B = c(6,7,11,12,13),
  C = c(paste0("Europe",c("Greece","Greece","Belgium","Belgium","Croatia")))
)

df %>%
  mutate(cond = ifelse(C == lead(C),
                  ifelse(A < lead(A) & B < lead(B), TRUE, FALSE), 
                    NA))
A  B             C  cond
1 3  6  EuropeGreece  TRUE
2 5  7  EuropeGreece    NA
3 7 11 EuropeBelgium FALSE
4 6 12 EuropeBelgium    NA
5 9 13 EuropeCroatia    NA

相关问题