我如何创建一列以指示行是否首先出现在值中?

eri*_*son 0 sorting r dataframe

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

数据框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")
Run Code Online (Sandbox Code Playgroud)

Sot*_*tos 5

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

!duplicated(A$V1)
#[1]  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE
Run Code Online (Sandbox Code Playgroud)

要么

ifelse(!duplicated(A$V1), 'y', 'n')
#[1] "y" "y" "y" "n" "y" "n" "y"
Run Code Online (Sandbox Code Playgroud)

我们也可以避免ifelse(由于@jogo)

c("n", "y")[1 + !duplicated(A$V1)]
#[1] "y" "y" "y" "n" "y" "n" "y"
Run Code Online (Sandbox Code Playgroud)