我在这里碰壁了。
我有一个dataframe
,很多行。
这是示意性示例。
#myDf
ID c1 c2 myDate
A 1 1 01.01.2015
A 2 2 02.02.2014
A 3 3 03.01.2014
B 4 4 09.09.2009
B 5 5 10.10.2010
C 6 6 06.06.2011
....
我需要对我的dataframe
by my ID
,然后选择日期最早的行,并将输出写入新的数据帧 - 保留所有行。
ID c1 c2 myDate
A 3 3 03.01.2014
B 4 4 09.09.2009
C 6 6 06.06.2011
....
这就是我的处理方式:
test <- myDf %>%
group_by(ID) %>%
mutate(date == as.Date(myDate, format = "%d.%m.%Y")) %>%
filter(date == min(b2))
验证:nrow
我生成的数据框应该与unique
返回。
unique(myDf$ID) %>% length == nrow(test)
FALSE
不起作用。我试过这个:
newDf <- ddply(.data = myDf,
.variables = "ID",
.fun = function(piece){
take.this.row <- piece$myDate %>% as.Date(format="%d.%m.%Y") %>% which.min
piece[take.this.row,]
})
这确实会永远运行。我终止了它。
为什么第一种方法不起作用?解决该问题的好方法是什么?