我正在寻找一种方法来引用我的数据框中的一个明显的行,该行具有与“当前行”相同的一个列值。基本上,如果这是我的数据框
A B D
1 10
4 5
6 6
3 25
1 40
我希望D(i)包含A与A(i)具有相同值的最后一行的B值。所以对于应该是10的最后一行。
答案 0 :(得分:1)
你可以试试这个:
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")
答案 1 :(得分:1)
您可以尝试
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))