我的数据集包含def add(request):
// Do something
return render(request, 'register/index.html', {})
和ID
作为标识符。我想将我们没有上一年记录的行分开,即我希望从Year
找到B
:
A
我可以通过以下A =
ID Year x y
1 2010 1 2
1 2011 2 2
1 2014 4 1
2 2013 2 3
2 2014 1 2
B =
ID Year x y
1 2010 1 2
1 2014 4 1
2 2013 2 3
获得,但我确信有更好的方法可以做到这一点!在以下代码中,我首先按if loop
和A
对ID
进行排序,以检测每个Year
的第一个数据条目。
ID
数据(感谢@ chinsoon12)
B <- A_sort[1,]
for(i in 2:nrow(A_sort)){
if(A_sort$ID[i] != A_sort$ID[i-1]){
B <- rbind(B,A_sort[i,])
}else if(A_sort$Year[i] != A_sort$Year[i-1]+1){
B <- rbind(B,A_sort[i,])
}
}
答案 0 :(得分:0)
使用diff来计算行之间滞后的年份?然后选择没有上一年记录的那些
A <- structure(list(ID = c(1L, 1L, 1L, 2L, 2L), Year = c(2010L, 2011L,
2014L, 2013L, 2014L), x = c(1L, 2L, 4L, 2L, 1L), y = c(2L, 2L,
1L, 3L, 2L)), .Names = c("ID", "Year", "x", "y"), class = "data.frame", row.names = c(NA,
-5L))
library(plyr)
ddply(A[order(A$ID, A$Year),], .(ID), function(x) {
yearLag <- c(0,diff(x$Year))
x[yearLag != 1, ]
})