2013-07-12 103 views
1

我有三個數據集。r,在data.frame中添加一列

組1:

A B 
    23 12 
    34 81 
    13 45 
    11 23 

組2:

A B 
.34 1.1 
.5  2.0 
.4  1.8 

設置3:

A B 
    -23 5 
    -3 0.1 
    .8 -2.3 
    -.6 1.4 
    4  3.2 

現在我要創建一個數據幀作爲下面的類型:

A  B Type 
    23 12 1 
    34 81 1 
    . 
    . 
    . 
    11 23 1 
    .34 1.1 2 
    .5 2.0 2 
    .4 1.8 2 
    -23 5  3 
    . 
    . 
    . 
    4 3.2 3 

我嘗試:

set1 <- data.frame(A=c(23,34,13,11),B=c(12,81,45,23)) 
    set2 <- data.frame(A=c(.34,.5,.4),B=c(1.1,2,1.8)) 
    set3 <- data.frame(A=c(-23,-3,.8,-.6,4),B=c(5,.1,-2.3,1.4,3.2)) 

    dat123 <- rbind(set1,set2,set3) 

但我不能添加列Type

+0

你爲什麼不能? 'data.frame(A = c(23,34,13,11),B = c(12,81,45,23),Type = 1)'... – Roland

+0

@Roland添加'Type'列是我的問題的下一部分。在知道我需要添加'Type'之前,我必須完成我的問題的一半任務。所以如果我現在做這個'data.frame(A = c(23,34,13,11),B = c(12,81,45,23),Type = 1)',我必須改變很多我以前的代碼。 – ABC

回答

5

像這樣:

l <- list(set1, set2, set3) 
do.call(rbind, Map(data.frame, l, type = seq_along(l))) 
+0

你能否給我一些關於'Map'的參考。我已經搜索過'Map',但是我不清楚。 – ABC

+0

當然。 'Map Map'文件說:''Map'是'mapply'的簡單包裝,它不會試圖簡化結果。如果你不熟悉'mapply',看看它的文檔。 – flodel

+0

非常感謝。 – ABC

3
set1 <- data.frame(A=c(23,34,13,11),B=c(12,81,45,23)) 
set2 <- data.frame(A=c(.34,.5,.4),B=c(1.1,2,1.8)) 
set3 <- data.frame(A=c(-23,-3,.8,-.6,4),B=c(5,.1,-2.3,1.4,3.2)) 

Type=rep(c(1,2,3), times=c(nrow(set1), nrow(set2), nrow(set3))) 
dat123 <- cbind(rbind(set1,set2,set3), Type)