2016-02-14 64 views
0

我有以下數據庫。 如何忽略空單元格並壓縮成一行?摘要數據幀

M = data.frame(Name = c('name','name'), Col1 = c("",1) , Col2 = c(2,"")) 
M$Col1 <- as.character(M$Col1) 
M$Col2 <- as.character(M$Col2) 

謝謝

+2

嘗試使用'aggregate(。〜Name,M,paste,collapse =「」)''。 – nicola

+0

@nicola謝謝,但我想在行上顯示「名稱」,「1」,「2」 –

+0

@ nicola的建議給出了輸出結果,請參閱我爲它製作的社區wiki答案 – h3rm4n

回答

0

您可以使用合計功能解決你的問題。

aggregate(M[c("Col1","Col2")], list(M$Name), max, na.rm = TRUE) 
+0

非常感謝,但是有沒有我可以聚合角色的方式? –

+0

使用* max *而不是* min *作爲聚合的樂趣。你會得到所需的輸出 –

0

這裏是一個dplyr解決

library(dplyr) 
M %>% 
    group_by(Name) %>% 
    summarise(Col1 = paste0(Col1, collapse = ''), 
       Col2 = paste0(Col2, collapse = '')) 

##  Name Col1 Col2 
## (fctr) (chr) (chr) 
## 1 name  1  2 

這部作品根據輸入數據,而不必在列轉換爲字符

M = data.frame(Name = c('name','name'), Col1 = c("",1) , Col2 = c(2,"")) 
1

由於@Nicola在評論中已經表示:

M2 <- aggregate(.~Name, M, paste, collapse="") 

正在給出所需的輸出:

> M2 
    Name Col1 Col2 
1 name 1 2