我有两个数据帧df1和df2,如果df1 $ date1与df2 $ date2相匹配,则仅输出df2中的那些值,如输出所示。
df1:
date1
01-09-2018
01-10-2018
01-11-2018
01-12-2018
df2:
date2 value
01-05-2018 0
01-06-2018 0
01-07-2018 0
01-08-2018 0
01-09-2018 5
01-10-2018 2
01-11-2018 7
01-12-2018 3
output:
value
5
2
7
3
答案 0 :(得分:1)
我们可以在内部联接模式下尝试使用merge
:
merge(df2, df1, by="date", all=FALSE)$value
[1] 5 2 7 3
# data
df2 <- data.frame(date=c("01-05-2018", "01-06-2018", "01-07-2018", "01-08-2018",
"01-09-2018","01-10-2018","01-11-2018","01-12-2018"),
value=c(0,0,0,0,5,2,7,3))
df1 <- data.frame(date=c("01-09-2018", "01-10-2018", "01-11-2018", "01-12-2018"))
请注意,我将您的日期列都重命名为date
,这是merge
轻松工作所必需的。
答案 1 :(得分:1)
使用sqldf
:我们可以使用inner join
列在两个data.frames
之间执行date
library(sqldf)
sqldf("select a.value from df2 as a JOIN df1 USING(date)")
输出:
value
1 5
2 2
3 7
4 3
数据(由蒂姆提供):
df2 <- data.frame(date=c("01-05-2018", "01-06-2018", "01-07-2018", "01-08-2018",
"01-09-2018","01-10-2018","01-11-2018","01-12-2018"),
value=c(0,0,0,0,5,2,7,3))
df1 <- data.frame(date=c("01-09-2018", "01-10-2018", "01-11-2018", "01-12-2018"))