2013-07-12 6 views
1

У меня есть три набора данных.r, добавив столбец в data.frame

Set 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

@ Роланд, добавляющий столбец '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

Не могли бы вы дать мне ссылку на «Карта». я искал «Карту», ​​но мне это не ясно. – ABC

+0

Несомненно. В документе '? 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) 
Смежные вопросы