r - 消除每组内的 NA

标签 r dplyr

我最终得到的行具有与已删除的列相对应的 NA,并且我想删除这些 NA。这会将下面的示例 df 从三行变为一行,并为每个组留下一组变量。

df <- data.frame(group = c("a", "a", "a"), var1 = c(1, NA, NA), var2 = c(NA, 4, NA), var3 = c(NA, NA, 
2), var4 = c(1, NA, NA), var5 = c(NA, 4, NA), var6 = c(NA, NA, 2), var7 = c(1, NA, NA), 
var8 = c(NA, 4, NA), var3 = c(NA, NA, 2))    

我知道如何删除带有 NA 的整行或带有 NA 的列,但不知道如何折叠它。

最佳答案

根据示例,可以使用 summarise_all 来完成,假设每个“组”的每一列只有一个非 NA 元素

library(dplyr)
df %>%
   group_by(group) %>%
   summarise_all(na.omit)
# A tibble: 1 x 10
#  group  var1  var2  var3  var4  var5  var6  var7  var8 var3.1
#  <fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
#1 a         1     4     2     1     4     2     1     4      2

关于r - 消除每组内的 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58547689/

相关文章:

r - dplyr::mutate:- 新列 = 两个逗号分隔列表列之间的差异

r - dplyr:对带引号的变量名进行 mutate 的标准评估

r - 如何使用 dplyr 函数在数据表中添加新列?

R : Convert nested list into a one level list

r - 将具有相同变量名称和数据类型的两个数据帧合并在一起

r - 向 quantmod::chart_Series 添加垂直线

r - 在 dplyr 中有条件地改变数据

c++ - 在 Rcpp 中有效地生成随机比特流

从 readr::read_csv 中读取的数据中删除属性

R dplyr::mutate with ifelse 以全局变量为条件回收第一行的结果