我有以下数据库。 如何忽略空单元格并压缩成一行?摘要数据帧
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)
谢谢
我有以下数据库。 如何忽略空单元格并压缩成一行?摘要数据帧
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)
谢谢
您可以使用合计功能解决你的问题。
aggregate(M[c("Col1","Col2")], list(M$Name), max, na.rm = TRUE)
非常感谢,但是有没有我可以聚合角色的方式? –
使用* max *而不是* min *作为聚合的乐趣。你会得到所需的输出 –
这里是一个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,""))
由于@Nicola在评论中已经表示:
M2 <- aggregate(.~Name, M, paste, collapse="")
正在给出所需的输出:
> M2
Name Col1 Col2
1 name 1 2
尝试使用'aggregate(。〜Name,M,paste,collapse =“”)''。 – nicola
@nicola谢谢,但我想在行上显示“名称”,“1”,“2” –
@ nicola的建议给出了输出结果,请参阅我为它制作的社区wiki答案 – h3rm4n