2016-11-28 40 views
0

Извините за неправильное оформление вопроса. Iam новичок, пытаясь научиться R самостоятельно.Как использовать rbind и cbind на Single Dataframe

У меня есть сценарий, как,

t1_df

id name address 
1  x  india 
2  y  usa 

t2_df

id name address 
3  a  india 
4  b  usa 

Теперь я пытался добавить дополнительные колонки "MSG" с помощью data.frame т.е.

t1_df <- data.frame(t1_df,msg) 
t2_df <- data.frame(t2_df,msg) 

t1_df

id name address msg 
    1  x  india hi 
    2  y  usa  hello 

t2_df

id name address msg 
3  a  india  go 
4  b  usa  bye 

, когда я пытался сделать rbind это дает ошибку как имена Col не соответствие, поскольку оба ДХ-х, имеющих различные имена Col

Когда я попытался привязать оба df к одному файлу данных, т, он включает все столбцы из т.е.

COLNAMES Обе Df (в т)

id name address t1_msg id name address t2_msg 

Но я хотел бы получить dataframe в

id name address t1_msg t2_msg 
    1  x  india hi  NA 
    2  y  usa  hello NA 
    3  a  india  NA  go 
    4  b  usa  NA  bye 

Как я Получите вывод, как я упомянул выше.

Пожалуйста, предложите мне.

Спасибо заранее Mohan.V

+0

на примере данных показал, что имена столбцов соответствия. У вас есть какие-либо ведущие/отстающие пробелы в именах столбцов. Используйте 'rbindlist' из' data.table' i.e.'rbindlist (list (t1_df, t2_df))' – akrun

+0

спасибо за ответ akrun, я попробовал то, что вы предложили, но он дал мне только t1_msg из t1_df, так как я упомянул, что мне нужно получить 2 столбца diff как t1_msg и t2_msg в единый кадр данных – Bunny

+1

Затем измените имена столбцов как 't1_msg' и' t2_msg' и используйте 'bind_rows' из' dplyr', то есть 'names (t1_df) [4] <-" t1_msg "; имена (t2_df) [4] <- "t2_msg"; bind_rows (t1_df, t2_df) ' – akrun

ответ

2

Похоже, вам нужно использовать слияние. Пример:

воссоздавать свои dataframes:

t1_df<-as.data.frame(matrix(c(1,  "x",  "india", 
           2,  "y",  "usa"), ncol= 3, nrow =2, byrow= T) 
        ) 
names(t1_df) <- c("id","name","address") 

t2_df<-as.data.frame(matrix(c(3,  "a",  "india", 
4,  "b",  "usa"), ncol= 3, nrow =2, byrow= T)) 
names(t2_df) <- c("id","name","address") 

Добавить МВП переменные. Для того, чтобы использовать слияние дать обе переменные немного другое имя (в вашем случае t1_msg и t2_msg)

t1_df$t1_msg <- c("hi","hello") 
t2_df$t2_msg <- c("go","bye") 

Затем с помощью слияния, чтобы объединить dataframes. Установка all = TRUE добавит строки, которые не имеют точного соответствия в другой части данных.

merge(t1_df,t2_df,all = TRUE) 

Полученный dataframe выглядит следующим образом:

id name address t1_msg t2_msg 
1 1 x india  hi <NA> 
2 2 y  usa hello <NA> 
3 3 a india <NA>  go 
4 4 b  usa <NA> bye 
+0

perfect..thanks niek – Bunny

 Смежные вопросы

  • Нет связанных вопросов^_^