【发布时间】:2016-12-18 00:50:57
【问题描述】:
我有一个数据集,其中每个人 (id) 都有一个 e_date,由于每个人可能有多个 e_date,我'正在尝试为每个人获取最早的日期。所以基本上我想要一个数据集,每个 id 一行显示他最早的 e_date 值。 我使用聚合函数来查找最小值,我创建了一个结合日期和 id 的新变量,最后我使用创建的新变量根据包含最小值的数据集对原始数据集进行了子集化。我来了:
new <- aggregate(e_date ~ id, data_full, min)
data_full["comb"] <- NULL
data_full$comb <- paste(data_full$id,data_full$e_date)
new["comb"] <- NULL
new$comb <- paste(new$lopnr,new$EDATUM)
data_fixed <- data_full[which(new$comb %in% data_full$comb),]
第一件事是聚合函数似乎根本不起作用,它减少了行数,但查看数据我可以清楚地看到一些 id 以不同的e_date多次出现>。另外,当我使用 as.Date 格式而不是日期的原始格式(整数)时,代码给了我不同的结果。我认为答案很简单,但我对这个很感兴趣。
【问题讨论】:
-
最好提供可重现的数据,尤其是在处理日期时。我创建了自己的示例,
aggregate和min工作正常,所以你真的需要dput数据。 stackoverflow.com/help/mcve 另请参阅 R 标签描述中的共享数据指南。 -
e_date列的格式是什么?也看看this