r语言数据处理(三)
2015-12-05 23:17
344 查看
有一表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
代码如下:
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
相关文章推荐
- Qt 设置鼠标
- 栈的java实现和栈的应用
- ZYB's Biology
- 闪退捕捉办法
- 集体智慧编程笔记:物品推荐过程小结
- WinDbg学习笔记
- 解决Java调用Azure SDK证书错误javax.net.ssl.SSLHandshakeException
- Iterator
- oracle创建表空间及用户赋予权限
- OutputStream
- mybatis(12) spring和mybatis整合
- ORL人脸数据库
- xxOutputStream xxInputStream
- pil
- 函数对象(function object)的简单讲解
- BufferedReader
- HDU 5591 (博弈 水~)
- Linux 内核与模块调试
- RandomAccessFile
- 入门训练 圆的面积