这不是一个真正的统计问题,而是执行实际统计分析之前的数据准备问题。我有一个由稀疏数据组成的数据框。我希望“扩大”这些数据,以便逐组地包括零值。R中的数据框“展开”过程?
这里是数据的一例(a
和b
是定义组的两个因素,t
是稀疏时间戳和x
是值):
test <- data.frame(
a=c(1,1,1,1,1,1,1,1,1,1,1),
b=c(1,1,1,1,1,2,2,2,2,2,2),
t=c(0,2,3,4,7,3,4,6,7,8,9),
x=c(1,2,1,2,2,1,1,2,1,1,3))
假设我想扩大之间的值t=0
和t=9
,这是我希望的结果:
test.expanded <- data.frame(
a=c(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),
b=c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2),
t=c(0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9),
x=c(1,0,2,1,2,0,0,2,0,0,0,0,0,1,1,0,2,1,1,3))
零点已插入的所有缺失值3210。这使它更易于使用。
我有一个快速和肮脏的实现,它对数据框进行排序并循环遍历每行,每次添加一行缺失的行。但我并不完全满意这个解决方案。有没有更好的方法来做到这一点?
对于熟悉SAS的人来说,它与proc expand
类似。
谢谢!
嗯。我看到你也想通过其他变量对它进行分组。很容易扩展这种方法,但我会等待并看看是否有其他人提出了一步到位的命令;-) – 2012-01-31 17:02:43
是的,在这个例子中,输出数据帧应该有20行因为我有两个组(a = 1,b = 1)(a = 1,b = 2)。感谢您的回答。 – caas 2012-01-31 17:06:55
哦,事实证明由于包'plyr':ddply(test,c(“a”,“b”),expand_function),分组并不是真正的问题,我可以将expand_function定义为你所提议的行。 – caas 2012-01-31 17:10:30