R-如何创建一个列,指示行是否是值首次出现



我有一个具有数千行的数据框架。数据框是由具有数值值的列排序的。我想创建一个列,指示该行是否是包含特定数值值的第一行。它应该仅基于该列。

数据框架A是现在如何组织数据的一个示例,B是我希望它的组织方式。

A <- data.frame(c(22, 27, 32, 32, 33, 33, 37), c(121, 243, 765, 322, 433, 435, 728)) 
colnames(A) <- c("V1", "V2")
B <- data.frame(c(22, 27, 32, 32, 33, 33, 37), c(121, 243, 765, 322, 433, 435, 728), c("y", "y", "y", "n", "y", "n", "y")) 
colnames(B) <- c("V1", "V2", "V3")

您基本上正在寻找重复项,即

!duplicated(A$V1)
#[1]  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE

ifelse(!duplicated(A$V1), 'y', 'n')
#[1] "y" "y" "y" "n" "y" "n" "y"

我们还可以避免ifelse(感谢@Jogo(

c("n", "y")[1 + !duplicated(A$V1)]
#[1] "y" "y" "y" "n" "y" "n" "y"

相关内容

最新更新