我需要合并两个csv结构如下:
csv1 =
1.1, 1, 2, 3, 4, 5, 6
1.2, 1, 2, 3, 4, 5, 6
1.3, 1, 2, 3, 4, 5, 6
csv2 =
1.1, a, b, c, d, e, f
1.2, a, b, c, d, e, f
1.3, a, b, c, d, e, f
两个csv的第一列为" ID" (1.1,1.2,1.3)。
所以我需要的是第三个csv结构化的whit相同的行号,使用ID列作为合并点:
csv merged =
1.1, 1, 2, 3, 4, 5, 6, a, b, c, d, e, f
1.2, 1, 2, 3, 4, 5, 6, a, b, c, d, e, f
1.3, 1, 2, 3, 4, 5, 6, a, b, c, d, e, f
我试图使用函数合并,但我没有得到预期的结果。
我使用了以下代码:
> dt1 <- read.csv(test, header = FALSE)<br>
> dt1<br>
V1 V2 V3 V4 V5 V6 V7<br>
1 1.1 1 2 3 4 5 6<br>
2 1.2 1 2 3 4 5 6<br>
3 1.3 1 2 3 4 5 6<br>
> dt2 <- read.csv(test2, header = FALSE)<br>
> dt2<br>
V1 V2 V3 V4 V5 V6 V7<br>
1 1.1 a b c d e f <br>
2 1.2 a b c d e f <br>
3 1.3 a b c d e f <br>
> merge(dt1, dt2)<br>
[1] V1 V2 V3 V4 V5 V6 V7<br>
<0 rows> (or 0-length row.names)<br><br>
感谢您的关注。
答案 0 :(得分:0)
一种方法是:
merge(dt1, dt2, by.x = 'V1', by.y = 'V1')
另一种方式是:
dt1$v11 <- dt2[match(dt1$V1, dt2$V1), 2]
dt1$v12 <- dt2[match(dt1$V1, dt2$V1), 3]
dt1$v13 <- dt2[match(dt1$V1, dt2$V1), 4]
dt1$v14 <- dt2[match(dt1$V1, dt2$V1), 5]
dt1$v15 <- dt2[match(dt1$V1, dt2$V1), 6]
dt1$v16 <- dt2[match(dt1$V1, dt2$V1), 7]
这也是一个重复的问题,可在此处找到答案:
How to join (merge) data frames (inner, outer, left, right)?