2015-06-23 53 views
0

假設我有一個很大的數據集,並且信息根據條目類型以及該條目類型的出現次數進行組織。如何創建R中每行中的所有條目的數據集?

說...

Area  Animal        Observations  
    US   Cat         4 
    NE   Cat         9 
    US   Dog         2 

我的問題是如何將我創建數據集(做R中分析)將列出喜歡的項目...

說...

Area  Animal  
    US   Cat 
    US   Cat 
    US   Cat... 
    US 
    NE 
    NE 
    NE 
    NE.... 
    US..   Dog.. 

我在問,因爲我有一個大型的數據集,我試圖讓每個行的每個條目,而不是他們被分組。有人知道怎麼做嗎?

回答

1

嘗試

library(splitstackshape) 
expandRows(df1, 'Observations') 
# Area Animal 
#1  US Cat 
#1.1 US Cat 
#1.2 US Cat 
#1.3 US Cat 
#2  NE Cat 
#2.1 NE Cat 
#2.2 NE Cat 
#2.3 NE Cat 
#2.4 NE Cat 
#2.5 NE Cat 
#2.6 NE Cat 
#2.7 NE Cat 
#2.8 NE Cat 
#3  US Dog 
#3.1 US Dog 
+0

令人難以置信!非常感謝你這麼快! – Timothy

1

指數數據幀由 'rownames' 重複多次, '意見':

> rep(rownames(dat), dat$Observations) 
[1] "1" "1" "1" "1" "2" "2" "2" "2" "2" "2" "2" "2" "2" "3" "3" 

> dat[ rep(rownames(dat), dat$Observations) , ] 
    Area Animal Observations 
1  US Cat   4 
1.1 US Cat   4 
1.2 US Cat   4 
1.3 US Cat   4 
2  NE Cat   9 
2.1 NE Cat   9 
2.2 NE Cat   9 
2.3 NE Cat   9 
2.4 NE Cat   9 
2.5 NE Cat   9 
2.6 NE Cat   9 
2.7 NE Cat   9 
2.8 NE Cat   9 
3  US Dog   2 
3.1 US Dog   2 
1

下面是使用lapply()rep()的方法:

df <- data.frame(Area=c('US','NE','US'), Animal=c('Cat','Cat','Dog'), Observations=c(4,9,2)); 
as.data.frame(lapply(df[-3],rep,df[,3])); 
## Area Animal 
## 1 US Cat 
## 2 US Cat 
## 3 US Cat 
## 4 US Cat 
## 5 NE Cat 
## 6 NE Cat 
## 7 NE Cat 
## 8 NE Cat 
## 9 NE Cat 
## 10 NE Cat 
## 11 NE Cat 
## 12 NE Cat 
## 13 NE Cat 
## 14 US Dog 
## 15 US Dog 
相關問題