首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于区间合并两个数据集

基于区间合并两个数据集
EN

Stack Overflow用户
提问于 2017-06-29 10:45:10
回答 1查看 31关注 0票数 1

我想知道如何通过a和b合并这两个数据集。f数据集中的a列是间隔的下限,因此我需要将g数据集中的1.5与f中的1合并,将g中的4.4与f中的4合并,将g中的9.8与f中的9合并,依此类推。

代码语言:javascript
复制
a<-seq(1:10)
b<-c("a","b","a","b","a","a","a","b","b","a")
f<-data.frame(a,b)

a<-c(1.5,1.4,2.3,2.2,4.4,4,5,6.6,9.8,4.1,4.6,5.5)
b<-c("a","b","b","b","a","b","a","b","a","b","a","b")
m<-seq(1:12)
g<-data.frame(a,b,m)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-29 11:25:34

不能确切地确定您在这里寻找的是什么,但是floor()函数应该会给您所需要的。一般情况下,您还可以研究tidyverse,特别是dplyr,以进行数据操作。

不完全清楚您期望的输出是什么-合并后b列略有不同-您是否只想要匹配的记录?如果您不关心不匹配的记录,请删除all.xall.y参数。我还假设重命名您的列可能是按顺序的:

代码语言:javascript
复制
a <- seq(1:10)
b <- c("a", "b", "a", "b", "a", "a", "a", "b", "b", "a")
f <- data.frame(a, b)

a <- c(1.5, 1.4, 2.3, 2.2, 4.4, 4, 5, 6.6, 9.8, 4.1, 4.6, 5.5)
b <- c("a", "b", "b", "b", "a", "b", "a", "b", "a", "b", "a", "b")
m <- seq(1:12)
g <- data.frame(a, b, m)

## floor function takes care of rounding down
g$c <- floor(g$a)

merge(f, g, by.x = "a", by.y = "c", all.x = TRUE, all.y = TRUE)
#> Warning in merge.data.frame(f, g, by.x = "a", by.y = "c", all.x = TRUE, :
#> column name 'a' is duplicated in the result
#>     a b.x   a  b.y  m
#> 1   1   a 1.5    a  1
#> 2   1   a 1.4    b  2
#> 3   2   b 2.3    b  3
#> 4   2   b 2.2    b  4
#> 5   3   a  NA <NA> NA
#> 6   4   b 4.4    a  5
#> 7   4   b 4.0    b  6
#> 8   4   b 4.6    a 11
#> 9   4   b 4.1    b 10
#> 10  5   a 5.5    b 12
#> 11  5   a 5.0    a  7
#> 12  6   a 6.6    b  8
#> 13  7   a  NA <NA> NA
#> 14  8   b  NA <NA> NA
#> 15  9   b 9.8    a  9
#> 16 10   a  NA <NA> NA
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44815545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档