【发布时间】:2021-01-29 03:55:21
【问题描述】:
假设我有 2 个数据框想要merge。 df1 对每个样本进行了重复测量(我实际上不知道有多少,并且每个样本可能不同),而 df2 对于相同的样本只有一个测量值。
作为 MWE,如下所示:
> df1=data.frame(letter=rep(LETTERS[1:5],each=3), val1=1:15)
> df2=data.frame(letter=LETTERS[1:5], val2=16:20)
> df1
letter val1
1 A 1
2 A 2
3 A 3
4 B 4
5 B 5
6 B 6
7 C 7
8 C 8
9 C 9
10 D 10
11 D 11
12 D 12
13 E 13
14 E 14
15 E 15
> df2
letter val2
1 A 16
2 B 17
3 C 18
4 D 19
5 E 20
我想merge 他们以反映这一点。到目前为止,我可以做到:
> merge(df1, df2)
letter val1 val2
1 A 1 16
2 A 2 16
3 A 3 16
4 B 4 17
5 B 5 17
6 B 6 17
7 C 7 18
8 C 8 18
9 C 9 18
10 D 10 19
11 D 11 19
12 D 12 19
13 E 13 20
14 E 14 20
15 E 15 20
但理想情况下,我需要这个:
> merge(df1, df2, all=T)
letter rep val1 val2
1 A 1 1 16
2 A 2 2 NA
3 A 3 3 NA
4 B 1 4 17
5 B 2 5 NA
6 B 3 6 NA
7 C 1 7 18
8 C 2 8 NA
9 C 3 9 NA
10 D 1 10 19
11 D 2 11 NA
12 D 3 12 NA
13 E 1 13 20
14 E 2 14 NA
15 E 3 15 NA
但是我从一开始就没有 rep 列,所以我应该添加它,但我不知道如何...或者,也许 merge 有一些选项只列出第一个匹配项val2 专栏...
有什么帮助吗?这应该很容易,但我进入循环并检查以添加 rep 列,这可能不是这样。
【问题讨论】: