2017-04-05 67 views
-1

我需要清理以下数据帧逆透视数据帧 - 获取原始数据系列

df <- data.frame(metric=c(10,20,30,40,NA), cnt=c(1,2,1,2,2)) 
> df 
    metric cnt 
1  10 1 
2  20 2 
3  30 1 
4  40 2 
5  NA 2 

我需要回去这将有如下的原始数据系列(逆转置??)。

metric 
1  10 
2  20 
3  20 
4  30 
5  40 
6  40 
7  NA 
8  NA 

这是一个用例tidyr?如果是,基于tidyr的解决方案也会有所帮助。

回答

2

我们可以使用rep

df1 <- data.frame(metric = rep(df$metric, df$cnt)) 
1

有逆RLE功能inverse.rle()。请参阅help("rle")

df <- data.frame(metric=c(10,20,30,40,NA), cnt=c(1,2,1,2,2)) 
names(df) <- c("values", "lengths") 
inverse.rle(df) # or 
data.frame(metric=inverse.rle(df))