2015-08-10 3 views
0

У меня есть такие данные ....Как преобразовать данные в R

Id    Name     gid  
GO:0019992 diacylglycerol binding 23025  
GO:0019992 diacylglycerol binding 10497  
GO:0045703 ketoreductase activity 8644  
GO:0016519 gastric inhibitory peptide receptor activity 2696  
GO:0035174 histone serine kinase activity 5562  
GO:0035174 histone serine kinase activity 5563  
GO:0035174 histone serine kinase activity 6795  
GO:0030298 receptor signaling protein tyrosine kinase activator activity 6352 
GO:0030292 protein tyrosine kinase inhibitor activity 11116 
GO:0030292 protein tyrosine kinase inhibitor activity 10399 

Я должен изменить это в

GO:0019992 diacylglycerol binding 23025 10497  
GO:0045703 ketoreductase activity 8644  
GO:0016519 gastric inhibitory peptide receptor activity 2696  
GO:0035174 histone serine kinase activity 5562 5563 472 6790 9212 6795  
GO:0035175 histone kinase activity (H3-S10 specific) 7443  
GO:0030298 receptor signaling protein tyrosine kinase activator activity 6352  
GO:0030292 protein tyrosine kinase inhibitor activity 11116 10399 

Как я могу это сделать в R?

+0

@Downvoter: нисходящий поток без комментариев - это плохая форма. Это исключительно верно для первого вопроса о новых пользователях. –

ответ

1

Предполагая, что ваш data.frame назван df

Основание:

new_var <- unlist(
    lapply(
    split(df,f = df$Name), 
    function(x) paste0(x$gid, collapse= " ") 
) 
) 
df <- df[unique(df[,1:2]),] 
df$new_var <- new_var 
3

Вы можете получить там с data.table:

library(data.table) 
dt <- as.data.table(df) # where df is your table of GO terms 
dt <- dt[,list(gids=paste(gid, collapse=" ")), by=list(Id, Name)] 
+3

Вам не нужен полный оператор 'dt <- as.data.table (df)'. Просто 'setDT (df)' достаточно для преобразования в формат 'data.table'. – Jaap

+0

Спасибо! Скотт ... Он работает –

+0

Спасибо @Jaap Я не знал о 'setDT' –

0

В дополнение к другим ответы, вот еще с использованием пакета dplyr:

library(dplyr) 
df = df %>% 
    group_by(Id, Name) %>% 
    summarise(gids = paste(gid, collapse = " ")) 
Смежные вопросы