我很难找到关于我正在尝试做的事情的答案/例子,其中包括:
示例数据框,其中我有值(1)以及单元格中的NA:
Obvs | Cond1 | Cond2 | Cond3 | Cond4 | Value
---------------------------------------------
1 | 1 | NA | 1 | NA | 3
2 | NA | 1 | 1 | NA | 2
3 | 1 | NA | 1 | NA | 9
4 | 1 | NA | NA | 1 | 9
5 | NA | 1 | NA | NA | 7
6 | NA | NA | NA | 1 | 7
7 | NA | NA | 1 | NA | 10
8 | NA | 1 | NA | NA | 9
9 | NA | NA | NA | 1 | 4
10 | 1 | NA | NA | NA | 4
11 | NA | NA | 1 | 1 | 3
12 | NA | 1 | 1 | NA | 5
我的目标是获得满足每个列组合的行的平均值,其值为(即值1)。例如,Obvs 1和3中的观察值都在Cond1和Cond3中有值,而其他Cond cols是NA,所以我想创建一个单独的列来保存这两个Obvs值的平均值。因此输出将如下所示,它显示数据集中可用的所有Cond组合的平均值。 R有没有办法优雅地找到所有这些组合(没有我手动指定它们)并吐出平均值,如果它满足特定组合?这将适用于需要考虑更多列的大型数据集。
Cond1 | Cond2 | Cond3 | Cond4 | Avg_Value
1 | NA | 1 | NA | 6
NA | 1 | 1 | NA | 3.5
1 | NA | NA | 1 | 9
NA | 1 | NA | NA | 8
NA | NA | NA | 1 | 5.5
NA | NA | 1 | NA | 10
1 | NA | NA | NA | 4
NA | NA | 1 | 1 | 3
非常感谢!
答案 0 :(得分:0)
您可以使用group_by
包中的summarise
和dplyr
:
df %>%
group_by(Cond1,Cond2,Cond3,Cond4)%>%
summarise(Avg_Value=mean(Value))
Cond1 Cond2 Cond3 Cond4 Avg_Value
<chr> <chr> <chr> <chr> <dbl>
1 1 NA 1 NA 6.0
2 1 NA NA 1 9.0
3 1 NA NA NA 4.0
4 NA 1 1 NA 3.5
5 NA 1 NA NA 8.0
6 NA NA 1 1 3.0
7 NA NA 1 NA 10.0
8 NA NA NA 1 5.5