我有一个包含两列的数据框,一列包含日期,另一列包含数字。我的目标是将另一个数据框中的日期插入日期列。这是一个示例:
df <- data.frame(rep(as.Date("2001-01-01", origin = "1970-01-01"), 3),
c(1, 2, 3),
stringsAsFactors = F)
ins <- data.frame(rep(as.Date("1999-01-01", origin = "1970-01-01"), 3),
c(1, 2, 3),
stringsAsFactors = F)
我要获取的数据帧是:
> df_goal
dates numbers
1 1999-01-01 1
2 2001-01-01 2
3 2001-01-01 3
我尝试了df[1, ] <- c(ins[1, 1], ins[1, 2])
,但是遇到以下错误:
as.Date.numeric(value)中的错误:必须提供'origin'
但是,如果我在df
中省略了数字列,则它可以工作:
df <- data.frame(rep(as.Date("2001-01-01"), 3),
stringsAsFactors = F)
ins <- data.frame(rep(as.Date("1999-01-01"), 3),
c(1, 2, 3),
stringsAsFactors = F)
df[1, ] <- ins[1, 1]
如何使第一种情况(df
有两列)起作用?
答案 0 :(得分:3)
我尝试了
df[1, ] <- c(ins[1, 1], ins[1, 2])
,但是遇到以下错误:as.Date.numeric(value)中的错误:必须提供'origin'
不要使用c
-它会转换其参数,使它们具有相同的类。
在这种情况下,c(ins[1, 1], ins[1, 2])
是一个日期向量;并将其分配给df
的第二列时,R会尝试强制使该列保持最新状态以使分配有意义,例如as.Date(c(1, 2, 3))
。
您可以改为执行df[1,] <- ins[1, c(1,2)]
。
旁注:请勿根据行号进行这种插入;必须有更好的方法来实现您的目标,例如加入/合并。
答案 1 :(得分:0)
或者:
df2 <- rbind(ins[1,], df[2:3,])
或
df2 <- df
df2[1,] <- ins[1,]