【发布时间】:2017-10-16 08:03:50
【问题描述】:
我在 r 中有一个如下的数据框:
df<-data.frame(id=rep(1:3,each=2),date=rep(c(NA,"date1","date2"),each=2),value=rep(c(4.1,9.4,5.6,6),c(2,2,1,1)))
# id date value
# 1 1 <NA> 4.1
# 2 1 <NA> 4.1
# 3 2 date1 9.4
# 4 2 date1 9.4
# 5 3 date2 5.6
# 6 3 date2 6.0
我想从数据框中删除重复的行,这样如果有超过 1 行具有相同的 id、相同的日期和相同的值,那么我将只取第一行并删除其他行。
我的第一反应是:
library(dplyr)
df %>% group_by(id,date,value) %>% slice(1)
但是,我想要的是
# id date value
# 1 1 <NA> 4.1
# 2 1 <NA> 4.1
# 3 2 date1 9.4
# 4 3 date2 5.6
# 5 3 date2 6.0
对于“日期”为空的行,忽略 slice(1)。
我该怎么做?
【问题讨论】: