首页 > 解决方案 > 如何创建一个列来指示行是否是第一次出现的值?

问题描述

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

数据框 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")

标签: rsortingdataframe

解决方案


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

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

推荐阅读