我有一個縱向數據幀:表示在數據幀行lapply功能
id= rep(1:3,each= 3)
a_yr = rep(1994:1996,3)
b_yr = c(1994,1995,1997,1994,1998,2001,1994,1997, 1998)
x= 1:9
df= data.frame(id,a_yr,b_yr,x)
ids a_yr b_yr x
1 1 1994 1994 1
2 1 1995 1995 2
3 1 1996 1997 3
4 2 1994 1994 4
5 2 1995 1998 5
6 2 1996 2001 6
7 3 1994 1994 7
8 3 1995 1997 8
9 3 1996 1998 9
我想創建一個包含第一a_yr
比賽b_yr
每個ID行的一個子集:
ids a_yr b_yr x
2 1 1994 1994 1
4 2 1994 1994 4
7 3 1994 1994 7
我試圖用lapply
功能:
lapply(unique(df$id), function(i){
data= df[which(df$id==i),]
rownames(data)<- data$a_yr
ind = data[1,"b_yr"]
dat= data[ind,]
})
但它返回了一堆NA
s。
[[1]]
id a_yr b_yr x
NA NA NA NA NA
[[2]]
id a_yr b_yr x
NA NA NA NA NA
[[3]]
id a_yr b_yr x
NA NA NA NA NA
我lapply
功能或任何其他更好的方法來解決這個問題,不知道如何索引行。 非常感謝!
這應該給你想要的東西:'DF [df $ a_yr == df $ b_yr,]' – Jaap
您的示例和預期輸出不匹配。 – akrun