合并具有多个匹配项的数据帧时,仅选择第一行
发布时间:2021-02-25 09:13:26 所属栏目:MsSql教程 来源:网络整理
导读:我有两个数据框,“数据”和“分数”,并希望将它们合并到“id”列: data = data.frame(id = c(1,2,3,4,5),state = c("KS","MN","AL","FL","CA"))scores = data.frame(id = c(1,1,3),score = c(66,75,78,86,85,76,90))merge(data,scores,by = "id") semi_join(
我有两个数据框,“数据”和“分数”,并希望将它们合并到“id”列: data = data.frame(id = c(1,2,3,4,5),state = c("KS","MN","AL","FL","CA")) scores = data.frame(id = c(1,1,3),score = c(66,75,78,86,85,76,90)) merge(data,scores,by = "id") semi_join(data,by = "id") 在“得分”数据中,存在具有多个观察的“id”,其中每个匹配在连接之后获得一行.看?合并:
但是,我希望只保留与得分表中第一个匹配对应的行. 半连接本来不错,但我无法从右表中选择得分. 有什么建议么? 解决方法使用data.table以及mult =“first”和nomatch = 0L:require(data.table) setDT(scores); setDT(data) # convert to data.tables by reference scores[data,mult = "first",on = "id",nomatch=0L] # id score state # 1: 1 66 KS # 2: 2 86 MN # 3: 3 76 AL 对于数据的id列中的每一行,找到score’id列中的匹配行,并保留第一行(因为mult =“first”).如果没有匹配,则删除它们(因为nomatch = 0L). (编辑:应用网_常德站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- schema – Redgate SQL Compare与Visual Studio 2010 Premi
- sql-server – EXISTS(SELECT 1 …)vs EXISTS(SELECT * …)
- 数据库设计 – SSD是否会降低数据库的实用性
- SQL – MS Access是否抑制插入的主键冲突?
- W3C教程(8):W3C XML Schema 活动
- sql-server-2008 – 可逆地破坏SQL Server复制的最简洁方法
- 数据库 – 在Microsoft Access(2010)中计算年和月的年龄
- sql-server – 添加通配符(或顶部)时SQL Server查询的大幅减
- sql – 如果表为空则如何返回0,否则返回1
- sql-server-2008 – “无法找到存储过程”,即使已在MS SQL
站长推荐
热点阅读