r-查找数据帧中符合特定条件的最后一行



我正在寻找一种方法来引用我的数据帧中的前一行,该行与"当前行"有一个共同的列值。基本上,如果这是我的数据帧

 A  B   D    
 1  10      
 4  5       
 6  6       
 3  25      
 1  40      

我希望D(I)包含最后一行的B值,其中A的值与A(I)的值相同。最后一行应该是10。

你可以试试这个:

for(i in seq_len(nrow(dat))) {
    try(dat$D[i] <- dat$B[tail(which(dat$A[1:i-1] == dat$A[i]),1)],silent=TRUE)
}

结果:

> dat
  A  B  D
1 1 10 NA
2 4  5 NA
3 6  6 NA
4 3 25 NA
5 1 40 10

数据:

dat <- read.csv(text="A,B,D
1,10
4,5
6,6
3,25
1,40")

您可以尝试

library(dplyr)
df1%>% 
    group_by(A) %>% 
    mutate(D=lag(B))
#  A  B  D
#1 1 10 NA
#2 4  5 NA
#3 6  6 NA
#4 3 25 NA
#5 1 40 10

library(data.table)#data.table_1.9.5
setDT(df1)[, D:=shift(B), A][]

数据

df1 <- structure(list(A = c(1L, 4L, 6L, 3L, 1L), B = c(10L, 5L, 6L, 
25L, 40L)), .Names = c("A", "B"), class = "data.frame",
 row.names = c(NA, -5L))

最新更新