0

我有以下数据框,它实际上是一个更大的数据框的一部分:

[7080,] 20100303 3.669138e-01  0.000000000
[7081,] 20100303 4.347603e-01  0.000000000
[7082,] 20100305 4.252109e-01  0.000000000
[7083,] 20100306 3.865164e-01  0.000000000
[7084,] 20100307 2.799683e-01  0.000000000
[7085,] 20100307 3.478009e-01  0.000000000
[7086,] 20100309 3.381812e-01  0.000000000

如您所见,第一列由日期组成,其中一些有 2 个测量值,而另一些有 1 个测量值。但是有些日期丢失了。

如果缺少某个日期,我想为该特定日期创建两个不同的“度量”,一个在第二列中的值为“0”,另一个为“1”(我希望值“1”高于“0”) . 第三列的值必须是 99(不是 NA)。结果将是这样的:

[7080,] 20100303 3.669138e-01  0.000000000
[7081,] 20100303 4.347603e-01  0.000000000
        20100304 1             99
        20100304 0             99
[7082,] 20100305 4.252109e-01  0.000000000
[7083,] 20100306 3.865164e-01  0.000000000
[7084,] 20100307 2.799683e-01  0.000000000
[7085,] 20100307 3.478009e-01  0.000000000
        20100308 1             99
        20100308 0             99
[7086,] 20100309 3.381812e-01  0.000000000

有谁知道如何做到这一点?帮助会很棒!

4

1 回答 1

2

你没有给我们变量名,所以我编了一些:

# alldates       # a vector of all possible dates
# currentdates   # your current dataframe variable of dates

要获取 all alldates,您可以尝试生成从时间序列的起源到未来某个时间点的所有可能日期的范围。例如,下面给出了从 1900-01-01 开始的前 10 天:

as.Date(1:10,origin = "1900-01-01")

有了这个,做你要求的事情应该相对容易:

# generate a vector of all missing dates
z1 <- rep(alldates[!alldates %in% currentdates],each=2) 
# generate a vector of 0's and 1's
z2 <- rep(c(1,0),(length(z1)/2)) 
# generate a vector of 99's
z3 <- rep(99,length(z2)) 
cbind(z1,z2,z3) # put it all together

rbind然后,您可以使用或其他方式将其添加到您的原始数据中。

于 2013-05-13T09:30:05.997 回答