基于在r中定义1个变量的若干列的2个数据帧的合并



我有2个数据帧。代码为:year、pd、treatm和rep。变量是第一个数据帧中的LAI,cimer、himv、nõv在第二个数据帧。我想将变量LAI添加到其他变量/列中。我不知道如何设置LAI数据的正确顺序,而1个数据有4个代码需要定义。你能帮我解决这个问题吗?非常感谢!

数据帧为:

> sample1
year treatm pd rep  LAI  
1  2020      1  A   1 2.58
2  2020      1  A   2 2.08
3  2020      1  A   3 2.48
4  2020      1  A   4 2.98
5  2020      2  A   1 3.34
6  2020      2  A   2 3.11
7  2020      2  A   3 3.20
8  2020      2  A   4 2.56
9  2020      1  B   1 2.14
10 2020      1  B   2 2.17
11 2020      1  B   3 2.24
12 2020      1  B   4 2.29
13 2020      2  B   1 3.41
14 2020      2  B   2 3.12
15 2020      2  B   3 2.81
16 2020      2  B   4 2.63
17 2021      1  A   1 2.15
18 2021      1  A   2 2.25
19 2021      1  A   3 2.52
20 2021      1  A   4 2.57
21 2021      2  A   1 2.95
22 2021      2  A   2 2.82
23 2021      2  A   3 3.11
24 2021      2  A   4 3.04
25 2021      1  B   1 3.25
26 2021      1  B   2 2.33
27 2021      1  B   3 2.75
28 2021      1  B   4 3.09
29 2021      2  B   1 3.18
30 2021      2  B   2 2.75
31 2021      2  B   3 3.21
32 2021      2  B   4 3.57
> sample2
year.pd.treatm.rep.cimer.himv.nőv
1                2020,A,1,1,92,93,94
2                2020,A,2,1,91,92,93
3                2020,B,1,1,72,73,75
4                2020,B,2,1,73,74,75
5               2020,A,1,2,95,96,100
6                2020,A,2,2,90,91,94
7                2020,B,1,2,74,76,78
8                2020,B,2,2,71,72,74
9                2020,A,1,3,94,95,96
10               2020,A,2,3,92,93,96
11               2020,B,1,3,76,77,77
12               2020,B,2,3,74,75,76
13               2020,A,1,4,90,91,97
14               2020,A,2,4,90,91,94
15               2020,B,1,4,74,75,NA
16               2020,B,2,4,73,75,NA
17               2021,A,1,1,92,93,94
18               2021,A,2,1,91,92,93
19               2021,B,1,1,72,73,75
20               2021,B,2,1,73,74,75
21              2021,A,1,2,95,96,100
22               2021,A,2,2,90,91,94
23               2021,B,1,2,74,76,78
24               2021,B,2,2,71,72,74
25               2021,A,1,3,94,95,96
26               2021,A,2,3,92,93,96
27               2021,B,1,3,76,77,77
28               2021,B,2,3,74,75,76
29               2021,A,1,4,90,91,97
30               2021,A,2,4,90,91,94
31               2021,B,1,4,74,75,NA
32               2021,B,2,4,73,75,NA

您可以从dply使用inner_join

library(tidyverse)
inner_join(sample2,sample1, by=c("year","pd", "treatm", "rep"))

输出(前六行(

year pd treatm rep cimer himv nov  LAI
1: 2020  A      1   1    92   93  94 2.58
2: 2020  A      2   1    91   92  93 3.34
3: 2020  B      1   1    72   73  75 2.14
4: 2020  B      2   1    73   74  75 3.41
5: 2020  A      1   2    95   96 100 2.08
6: 2020  A      2   2    90   91  94 3.11

您也可以使用data.table

sample2[sample1, on=.(year,pd,treatm,rep)]

最新更新