在r中插入值
我有一个dataframe x,它有两列。假设它们是A列和B列。A列是日期,B列是该日期的值。A列和B列都是连续的,没有遗漏日期,以天为单位从1月到10月。现在我有另一个数据框y,它有A列和C列。A也是日期,C是另一个仪器在那个特定日期获取的值。但是,此数据帧中的A和C不是连续的(缺少日期)。例如,我的值为1/1,但下一个值将为1/10。现在,我想将数据帧y(离散日期)中的C值与第一个数据帧x(具有连续日期)连接起来,根据通用的A列,有没有一种有效的方法来实现这一点?您可以使用在r中插入值,r,R,我有一个dataframe x,它有两列。假设它们是A列和B列。A列是日期,B列是该日期的值。A列和B列都是连续的,没有遗漏日期,以天为单位从1月到10月。现在我有另一个数据框y,它有A列和C列。A也是日期,C是另一个仪器在那个特定日期获取的值。但是,此数据帧中的A和C不是连续的(缺少日期)。例如,我的值为1/1,但下一个值将为1/10。现在,我想将数据帧y(离散日期)中的C值与第一个数据帧x(具有连续日期)连接起来,根据通用的A列,有没有一种有效的方法来实现这一点?您可以使用合并自基本R r
合并自基本R
res1 <- merge(x,y, by="A", all.x=TRUE)
dim(res1)
#[1] 10 3
head(res1,3)
# A B C
#1 2011-04-03 1.3709584 0.2101654
#2 2011-04-04 -0.5646982 NA
#3 2011-04-05 0.3631284 NA
资料
set.seed(42)
x可能重复的,很抱歉重复。非常感谢!它起作用了!但是我没有使用All.x=TRUE
,而是使用了All=TRUE
。
library(dplyr)
res2 <- left_join(x,y, by="A") %>% #in case `date` column gets coerced to `numeric`
mutate(A= as.Date(A, origin='1970-01-01'))
all.equal(res1, as.data.frame(res2))
#[1] TRUE
set.seed(42)
x <- data.frame(A=seq(as.Date("2011-04-03"), length.out=10, by=1), B=rnorm(10))
set.seed(384)
y <- data.frame(A=seq(as.Date("2011-04-03"), length.out=6, by=3), C=rnorm(6))