【发布时间】:2015-10-29 13:15:16
【问题描述】:
我在这里撞墙了。
我有一个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 按我的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)
错误
不起作用。我试过这个:
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,]
})
这确实会永远运行。我终止了它。
为什么第一种方法不起作用?解决问题的好方法是什么?
【问题讨论】: