我有一个包含4列的data.frame。第一列是the_day
,从2015年1月11日到2015年11月30日。根据{{1}},接下来的3个值对应于每一天。但是,有些日期丢失了,因为接下来的3列中没有值(没有筹集资金)。
例如,缺少11/3/15。我想要做的是在11/2/15和11/4/15之间添加一行日期,并在接下来的3列中添加零。所以它会是这样的:
amount_raised
我是否必须创建一个向量,然后将其添加到现有的11/3/2015 0 0 0
中?我觉得必须有一个更快的方法。
答案 0 :(得分:0)
data.frames无法在内部按行进行排序。我会建议以下几点:
答案 1 :(得分:0)
这应该有效,
date_seq <- seq(min(df$the_day),max(df$the_day),by = 1)
rbind(df,cbind(the_day = as.character( date_seq[!date_seq %in% df$the_day]), inf = "0", specified = "0", both = "0"))
# the_day inf specified both
# 1 2015-11-02 1.32 156 157.32
# 2 2015-11-04 4.25 40 44.25
# 3 2015-11-05 3.25 25 28.25
# 4 2015-11-06 1 15 16
# 5 2015-11-07 4.75 10 14.75
# 6 2015-11-08 32 0 32
# 7 2015-11-03 0 0 0
如果您想根据the_day
对其进行排序,请将数据框放在变量中并使用order
函数
ans <- rbind(df,cbind(the_day = as.character( date_seq[!date_seq %in% df$the_day]), inf = "0", specified = "0", both = "0"))
ans[order(ans$the_day), ]
# the_day inf specified both
# 1 2015-11-02 1.32 156 157.32
# 7 2015-11-03 0 0 0
# 2 2015-11-04 4.25 40 44.25
# 3 2015-11-05 3.25 25 28.25
# 4 2015-11-06 1 15 16
# 5 2015-11-07 4.75 10 14.75
# 6 2015-11-08 32 0 32