我有一个看起来像这样的数据框
idnr date
a43 2011-12-19
a4945 2012-09-11
a43 2013-10-01
a231 2012-05-09
a231 2009-09-10
a6901 2015-06-12
我想要(重复项仅在idnr中定义)
同样,重复项仅在idnr列中定义。
idnr date newcolumn
a43 2011-12-19 2
a4945 2012-09-11 2
a43 2013-10-01 1
a231 2012-05-09 1
a231 2009-09-10 2
a6901 2015-06-12 2
或者,如果您愿意,我希望第二个报告的重复项在newcolumn中标记为1,其余的标记为2。
答案 0 :(得分:0)
library(dplyr)
首先创建您的表格
table <- data.frame(indr = c('a43','a4945', 'a43', 'a231', 'a231', 'a6901'),
date = c(as.Date('2011-12-19'), as.Date('2012-09-11'), as.Date('2013-10-01'),
as.Date('2012-05-09'), as.Date('2009-09-10'), as.Date('2015-06-12')))
然后我们确定重复项
duplicates <- as.character(table$indr[duplicated(table$indr)])
然后,我们为每个唯一值分配2:
table$newcolumn[!table$indr %in% duplicates] <- 2
最后,您可以使用for循环根据日期的最大值分配其他值
for(i in duplicates){
temp_table <- filter(table, indr == i)
high_date <- max(temp_table$date)
#now we assign the values
table$newcolumn[table$indr == i & table$date == high_date] <- 1
table$newcolumn[table$indr == i & table$date != high_date] <- 2
}
那应该做