r语言数据处理(三)

来源:互联网 发布:淘宝 虾米 vip兑换码 编辑:程序博客网 时间:2024/05/22 14:51

有一表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 <- bfor(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
0 0