r中2个相关数据帧的子集和合并
我已经搜索了档案,但在这个问题上没有任何结果,我涉及到两个相关数据帧的子集,一个数据帧是一个键,另一个是一个年度列表,我想使用该键创建一个子集和一个索引。我尝试使用子集公式,但我的代码不符合我的标准。以下是数据:r中2个相关数据帧的子集和合并,r,merge,dataframe,subset,R,Merge,Dataframe,Subset,我已经搜索了档案,但在这个问题上没有任何结果,我涉及到两个相关数据帧的子集,一个数据帧是一个键,另一个是一个年度列表,我想使用该键创建一个子集和一个索引。我尝试使用子集公式,但我的代码不符合我的标准。以下是数据: players <- c('Albert Belle','Reggie Jackson', 'Reggie Jackson') contract_start_season <- c(1999,1977,1982) contract_end_season <- c(20
players <- c('Albert Belle','Reggie Jackson', 'Reggie Jackson')
contract_start_season <- c(1999,1977,1982)
contract_end_season <- c(2003, 1981, 1985)
key <- data.frame (player = players, contract_start_season, contract_end_season)
player_data <- data.frame( season = c(seq(1975,1985),seq(1997,2003)), player = c(rep('Reggie Jackson',times=11),rep('Albert Belle', times=7)))
players您是否正试图按照以下思路做一些事情
library(data.table)
key <- data.table(key)
player_data <- data.table(player_data)
#Adding another column called season to help in the merge later
key[,season := contract_start_season]
# Index on which to merge
setkeyv(key, c("player","season"))
setkeyv(player_data, c("player","season"))
#the roll = Inf makes it like a closest merge, instead of an exact merge
key[player_data, roll = Inf]
但我想排除那些不重要的年份,比如雷吉·杰克逊的年份是1977年到1981年,然后是1982年到1985年,阿尔伯特·贝尔的年份是1999年到2003年。我对合并没问题,我只是希望它能够根据键中设置的标准进行子集缩小。实际上,只需去掉NA就可以了,我想!让我试试itTrykey[player\u data,roll=Inf][!is.na(合同开始季节)]
library(data.table)
key <- data.table(key)
player_data <- data.table(player_data)
#Adding another column called season to help in the merge later
key[,season := contract_start_season]
# Index on which to merge
setkeyv(key, c("player","season"))
setkeyv(player_data, c("player","season"))
#the roll = Inf makes it like a closest merge, instead of an exact merge
key[player_data, roll = Inf]
> key[player_data, roll = Inf]
player season contract_start_season contract_end_season
1: Albert Belle 1997 NA NA
2: Albert Belle 1998 NA NA
3: Albert Belle 1999 1999 2003
4: Albert Belle 2000 1999 2003
5: Albert Belle 2001 1999 2003
6: Albert Belle 2002 1999 2003
7: Albert Belle 2003 1999 2003
8: Reggie Jackson 1975 NA NA
9: Reggie Jackson 1976 NA NA
10: Reggie Jackson 1977 1977 1981
11: Reggie Jackson 1978 1977 1981
12: Reggie Jackson 1979 1977 1981
13: Reggie Jackson 1980 1977 1981
14: Reggie Jackson 1981 1977 1981
15: Reggie Jackson 1982 1982 1985
16: Reggie Jackson 1983 1982 1985
17: Reggie Jackson 1984 1982 1985
18: Reggie Jackson 1985 1982 1985