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

时间:2019-07-09 12:34:48

标签: r sorting 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")

1 个答案:

答案 0 :(得分:5)

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

!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"