r语言数据处理(三)

有一表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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值