全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1430 0
2010-06-12
现有以下两个数据x,y,当然只取出一小部分举例说明
x
     LT      LG       Y       ID
1    34.8    72.4    1997    349.1591
2    34.8    72.4    1998    349.1591
3    34.8    72.4    1999    349.1591
4    34.8    72.4    2000    349.1591
5    34.8    72.4    2001    349.1591
6    35.2    72.5    1997    347.3541
7    35.2    72.5    1998    347.3541
8    35.2    72.5    1999    347.3541
9    35.2    72.5    2000    347.3541
10    35.2    72.5    2001    347.3541
11    35.2    73.1    1997    347.3983
12    35.2    73.1    1998    347.3983
13    35.2    73.1    1999    347.3983
14    35.2    73.1    2000    347.3983
15    35.2    73.1    2001    347.3983
16    35.3    71.9    1997    347.3636
17    35.3    71.9    1998    347.3636
18    35.3    71.9    1999    347.3636
19    35.3    71.9    2000    347.3636
20    35.3    71.9    2001    347.3636

y

    SP                               P             LT     LG     Y     T
1    Abies balsamea (balsam fir)    A.F.E.S.    45.6    66.2    1999    7.62
2    Abies balsamea (balsam fir)    ACADIEVILLE    46.4    65.2    1999    8
3    Abies balsamea (balsam fir)    ASTLE    46.2    66.3    1999    7.32
4    Abies balsamea (balsam fir)    BAY D'ESPOIR    47.4    55.3    1999    9.14
5    Abies balsamea (balsam fir)    BEAR LAKE    47.1    66.1    1998    9.81
我想根据y中LT,LG和Y三个值在x中LT,LT和Y相同的行匹配出来,添加到y中,得到如下结果
SP                                P             LT     LG     Y     T     ID
Abies balsamea (balsam fir)    FRENCH RIVER    45.3    62.3    1997    11.15    306.1589
Abies balsamea (balsam fir)    OT SPOT ROAD    46.2    60.5    1997    11.41    302.2083
Abies balsamea (balsam fir)    CKENZIE ROAD    46.2    60.5    1997    10.1    302.2083
Abies balsamea (balsam fir)    NORTH RIVER    46.2    60.5    2001    NA    302.2083
Abies balsamea (balsam fir)    OTTAWA    45.2    75.3    1999    8.96    306.5334
Abies balsamea (balsam fir)    OTTAWA    45.2    75.3    1999    7.48    306.5334
我使用的程序是
xflag=paste(x[,1],x[,2],x[,3])
yflag=paste(y[,3],y[,4],y[,6])
id1=yflag%in%xflag
id2=sapply(yflag[id1],function(x)which(x==xflag))
result=data.frame(y[id1,],x[id2,3:7])
        这样只能匹配出LT,LG,Y完全一致的结果,三个指标分别为纬度、经度和年份,我想采用模糊匹配的方法,即在年份一样的情况下,在Y中匹配出LT,LG与Y中LT,LG距离最小的数据添加到Y中,并增加两列分别为X,Y中LT和LG的差值,当然如果有完全一致的这两列应该为0。不知道有没有讲清楚这个问题,请大家多提宝贵意见。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群