2010-10-01 84 views
1

我是R新手,热衷学习,但发现自己特别被困在似乎是一个相对直接的想法。引用索引数据框并检索匹配发生的数据

我有2个数据帧。第一种(蚂蚁)是与多个站点有关的数据,每个站点都有一个唯一的ID,一些站点有多于一行的数据。 它看起来像这样:

Site   Date   Time   Temp 
71    8-Jun-10  14:50:35  14.32 
71    8-Jun-10  14:51:29  14.31 
70    8-Jun-10  14:53:55  14.3  
70    8-Jun-10  14:54:09  14.3  
70    8-Jun-10  14:54:24  14.3  
69    8-Jun-10  14:56:30  14.28  

第二(HRsites)是与每个站点的编号相关联的纬度和经度的索引。

Site lat_52   long_00 
69  56.3075   9.1957 
70  56.4207   8.9147 
71  56.5208   8.6265 

我想什么做的是......当两个dataframes比赛的现场数字,我想在“HRsites”下在附加新列中添加举行相应的纬度和长期数据'蚂蚁'数据框。

我看到一个新的列由 蚂蚁加$ lat_52 < -

...这是我坚持,我不知道的功能繁多的的可在R和地方我觉得我可能没有用相当正确的语言进行搜索。任何帮助将非常感谢....即使它是理所当然的职能条款,我应该寻找。

+1

顺便说一句,如果您向我们提供一些测试数据与dput(head(your_df,20)) – 2010-10-01 18:10:22

回答

2

如果我正确理解你的问题,你想merge他们通过“网站”。

> lines <- "Site Date Time Temp 
+ 71 8-Jun-10 14:50:35 14.32 
+ 71 8-Jun-10 14:51:29 14.31 
+ 70 8-Jun-10 14:53:55 14.3 
+ 70 8-Jun-10 14:54:09 14.3 
+ 70 8-Jun-10 14:54:24 14.3 
+ 69 8-Jun-10 14:56:30 14.28" 
> 
> (ants <- read.table(con <- textConnection(lines),header=TRUE)); close(con) 
    Site  Date  Time Temp 
1 71 8-Jun-10 14:50:35 14.32 
2 71 8-Jun-10 14:51:29 14.31 
3 70 8-Jun-10 14:53:55 14.30 
4 70 8-Jun-10 14:54:09 14.30 
5 70 8-Jun-10 14:54:24 14.30 
6 69 8-Jun-10 14:56:30 14.28 
> 
> lines <- "Site lat_52 long_00 
+ 69 56.3075 9.1957 
+ 70 56.4207 8.9147 
+ 71 56.5208 8.6265" 
> 
> (HRsites <- read.table(con <- textConnection(lines),header=TRUE)); close(con) 
    Site lat_52 long_00 
1 69 56.3075 9.1957 
2 70 56.4207 8.9147 
3 71 56.5208 8.6265 
> 
> (Data <- merge(ants,HRsites,by="Site")) 
    Site  Date  Time Temp lat_52 long_00 
1 69 8-Jun-10 14:56:30 14.28 56.3075 9.1957 
2 70 8-Jun-10 14:53:55 14.30 56.4207 8.9147 
3 70 8-Jun-10 14:54:09 14.30 56.4207 8.9147 
4 70 8-Jun-10 14:54:24 14.30 56.4207 8.9147 
5 71 8-Jun-10 14:50:35 14.32 56.5208 8.6265 
6 71 8-Jun-10 14:51:29 14.31 56.5208 8.6265 
+0

非常感谢Joshua!现在我已经学会了MERGE函数:)我有一个查询是,当我执行此操作时,一切都很完美,除了一些我的纬度长数据的小数位数减少到0或从小数点后5位甚至小数点后6位小数点开始。我一直在试图格式化受影响的列,指定所需的小数位数......任何想法,为什么这可能是? – Joey 2010-10-04 12:31:12

+0

'merge'不会改变数据。要么是在合并之前或之后做某件事情,要么是精度下降,要么是数据的显示方式。如果在将数据写入文本文件时缺少精确度,那么前一种情况就是您的问题。 – 2010-10-04 13:04:12

+0

排序...是这只是如何显示数据。对不起,谢谢! – Joey 2010-10-04 13:52:37