我有一个数据框,其中数据框按 id 排序:
id = c("4_01", "4_01", "4_01", "4_02", "4_02", "4_02", "4_02", "4_03", "4_03", "4_03", "4_03", "4_04", "4_04")
date = c("2020-01-01 12:00:00", "2020-01-01 12:02:00", "2020-01-01 12:04:30","2019-12-23 07:30:00", "2019-12-24 15:35:00","2019-12-28 08:00:00","2019-12-28 12:30:00", "2019-08-20 05:30:00", "2019-08-20 15:30:00","2019-09-28 15:30:00","2019-10-01 12:30:00", "2019-11-01 01:00:00", "2019-11-01 01:30:00")
difftime = c(-700440, 120, 150, -794070, 115230, 318570, 16200,-10922430, 43200, 3369630, 248370, 2637000,1800)
df = data.frame(id, date, difftime)
我似乎不知道如何删除每个唯一 id 的第一个实例/行并保留剩余的行。
我的结果是这样的,其中删除了数据集中第一次出现每个唯一 ID 的第一行:
id = c("4_01", "4_01", "4_02", "4_02", "4_02", "4_03", "4_03", "4_03", "4_04")
date = c("2020-01-01 12:02:00", "2020-01-01 12:04:30", "2019-12-24 15:35:00","2019-12-28 08:00:00","2019-12-28 12:30:00", "2019-08-20 15:30:00","2019-09-28 15:30:00","2019-10-01 12:30:00", "2019-11-01 01:30:00")
difftime = c(120, 150, 115230, 318570, 16200, 43200, 3369630, 248370, 1800)
df = data.frame(id, date, difftime)
在我较大的数据集中,它是按唯一 id 排序的,因此它们在数据框中分组在一起,如本例所示,但我似乎无法让它工作。我正在使用 R。有什么建议吗?
您可以使用
dplyr
slice
辅助函数。在这种情况下你可以这样做
df %>% dplyr::slice_tail(n=-1, by=id)
这将从每个 id 组中删除第一行。