我有一个名为mydata
的数据集,除了其他变量之外,还包含这两个数据集,如下面的摘录中所示:
plot.name time.date
cam41 23
cam41 23
cam50 13
cam50 13
cam50 15
我正在尝试使用以下规则找到在每条记录上创建迭代控件的方法:
如果plot.name
的当前行等于下一行(例如,如果cam41 == cam41
)并且time.date
的当前行等于下一行(例如{{1} }),然后删除第二行。
我试图用23 == 23
来做这件事,但它不起作用,或者我的代码可能错了。
答案 0 :(得分:3)
我认为你要找的是来自R的unique
或来自distinct
的{{1}}。如果您需要将此条件应用于数据框中的所有列,则以下内容应该有效:
dplyr
或者:
unique(df)
plot.name time.date
1 cam41 23
3 cam50 13
5 cam50 15
但是,如果您有多个变量,但仅关注dplyr::distinct(df)
plot.name time.date
1 cam41 23
2 cam50 13
3 cam50 15
和plot.name
,请考虑以下time.date
:
dplyr
来自基地R的df %>%
mutate(id = row_number()) %>%
distinct(plot.name, time.date, .keep_all = TRUE)
:
duplicated
答案 1 :(得分:1)
如果你的目的不是用unique
删除所有重复的行,而你真的想按顺序检查每一行:
df[head(df$plot.name, -1L) == df$plot.name[-1L] & head(df$time.date, -1L) == df$time.date[-1L], ]
或dplyr
:
library(dplyr)
filter(df, (lead(plot.name) == plot.name & lead(time.date) == time.date) | row_number() == n())