2017-04-05 40 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))