在pivot_wider之后删除NA以匹配行

时间:2019-11-13 22:39:18

标签: r dplyr tidyr

我使用Sub script() For Each cell In Range("A1:A15") Do Until cell.Offset(1, 0) <> "" Or cell.Offset(1, 3) = "" With cell .Offset(1, 0).End(xlToRight).Copy cell.End(xlToRight).Offset(0, 1) .Offset(1, 0).EntireRow.Delete End With Loop Next cell End Sub 扩展了一个列,因此我可以使用xy图比较两组(var1与var2)。但是我无法比较它们,因为该列中有一个对应的NA。

这是一个示例数据框:

pivot_wider

我希望它看起来像:

 df <- data.frame(group = c("a", "a", "b", "b", "c", "c"), var1 = c(3, NA, 1, NA, 2, NA), 
            var2 = c(NA, 2, NA, 4, NA, 8))

2 个答案:

答案 0 :(得分:1)

您可以使用摘要。但这不是症状的起因。您可能在get()中有一列,该列与变量在id_cols中是一对一。

values_from

答案 1 :(得分:0)

这里是一种方法,假设您仅按组有两行,而有NA则只有一行

library(dplyr)

df %>%
  group_by(group) %>%
  summarize_all(sum, na.rm = T)

# A tibble: 3 x 3
  group  var1  var2
  <fct> <dbl> <dbl>
1 a         3     2
2 b         1     4
3 c         2     8

library(dplyr) df %>% group_by(group) %>% summarise(var1=max(var1,na.rm=TRUE), var2=max(var2,na.rm=TRUE)) 将不计算NA并仅获得一个值(不是NA的最大值)的最大值