压缩数据帧忽略空单元格

时间:2016-02-20 16:46:27

标签: r

我有以下数据库。

d <- data.frame(x=c("abc", "abc"), y=c("","R"), z=c("J",""))

如何通过忽略空单元格并将输出放在一行来压缩数据?

1 个答案:

答案 0 :(得分:1)

一种选择是将空白元素更改为NA,转换&#39; data.frame&#39;到&#39; data.table&#39; (setDT(d)),按&#39; x&#39;分组,我们删除每列中的NA值(na.omit - 假设每列有相同数量的NA&#39; s)

library(data.table)
is.na(d) <- d==''
setDT(d)[, lapply(.SD, na.omit), by = x]
#    x y z
#1: abc R J

dplyr

library(dplyr)
d %>%
     mutate_each(funs(replace(., .=='', NA)), y:z) %>%
     group_by(x) %>% 
     summarise_each(funs(na.omit(.)), y:z)
#      x      y      z
#  (fctr) (fctr) (fctr)
#1    abc      R      J