这是我的df
df <- structure(structure(list(group = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L), .Label = c("A", "B", "C", "D", "E"), class = "factor"), y = c(NA, NA, NA, NA, 1, NA, NA, NA, 1, 2, NA, NA, 1, 2, 3, NA, 2, 2, 3, 4, NA, 3, 3, 4, 5), x = c(1L, 2L, 3L, 4L,5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L)), .Names = c("group", "y", "x"), row.names = c(NA, 25L), class = "data.frame"))
> df
group y x
1 A NA 1
2 A NA 2
3 A NA 3
4 A NA 4
5 A 1 5
6 B NA 1
7 B NA 2
8 B NA 3
9 B 1 4
10 B 2 5
11 C NA 1
12 C NA 2
13 C 1 3
14 C 2 4
15 C 3 5
16 D NA 1
17 D 2 2
18 D 2 3
19 D 3 4
20 D 4 5
21 E NA 1
22 E 3 2
23 E 3 3
24 E 4 4
25 E 5 5
我的目标是使用
mutate
计算每个x值(跨组)的平均值。但首先,我想过滤数据,只保留至少有3个非NA值的x值。因此,在这个例子中,我只想包括那些x至少为3的条目。我无法想出如何创建filter()
,您有什么建议吗?
y
列吗?因为x
没有任何NA值。如果是这种情况,可以使用下面的代码:df %>% group_by(group) %>% filter(sum(!is.na(y))>=3) %>% mutate(Mean=mean(x, na.rm=TRUE))
。 - akrundf %>% group_by(x) %>% filter(sum(!is.na(y))>=3) %>% mutate(Mean=mean(x, na.rm=TRUE))
,非常感谢! - ercx
分组?Akrun 的方法更合适。而且列名是 group。 - Rich Scrivenmutate
,您是否会获得与 x 列中相同的值? - akrun