- 已编辑
为了避免中文支持的隐患,我把代码里的中文都改成英文,意思到了即可。
没有使用其他包。
# 源数据
c1 <- c('a', 2015, 300)
c2 <- c('a', 2016, 400)
c3 <- c('b', 2015, 700)
c4 <- c('b', 2016, 600)
dt <- data.frame(rbind(c1, c2, c3, c4), stringsAsFactors = FALSE)
names(dt) <- c('name', 'date', 'amount')
dt$merged <- paste0(dt$date, '-', dt$amount)
# 计算
tb <- tapply(dt$merged, dt$name, function(x) x[which.max(substr(x, 6, nchar(x)))])
tb
dt2 <- data.frame(name = names(tb), merged = tb)
dt2