r語言資料處理(三)

shuaishuai3409發表於2015-12-05

有一表1,v1表示序號
v1 v2
1 001
2 00A
3 00B
4 100
5 A00

下表為表2,v1表示序號
V1 V2 V3 V4 v5
1 001 002
2 00C 00A 00B
3 B00 C00 A00
4 300 100 200 500

期望在表1基礎上,v1,v2列不變,在表2中尋找和表1中的v2在同一行的所有元素,新增到表1中,形成如下表:
V1 V2 V3 V4 v5
1 001 002
2 00A 00C 00B
3 00B 00C 00A
4 100 300 200 500
5 A00 B00 C00


程式碼如下:

a <- data.frame(v1=1:5, v2=c('001', '00A', '00B', '100', 'A00'), stringsAsFactors = F)
b <- data.frame(v1= 1:4, v2 = c('001', '00C', 'B00', '300'), V3 = c('002', '00A', 'C00', '100'), V4 = c(NA, '00B', 'A00', '200'), V5 = c(NA, NA, NA, '500'), stringsAsFactors = F)
r <- b
for(i in 1:nrow(a)){
key <- a[i, 2]
for(n in 1:nrow(b)){
if(length(which((b[n,]==key)==T))>0)
r[i, ] <- cbind(a[i, ], setdiff(b[n,-1], a[i,-1]))
}
}
r

相關文章