,可以使用group_by()
和summarize()
函数来实现。
首先,使用group_by()
函数按照需要进行分组的列进行分组。然后,使用summarize()
函数结合across()
函数来对每个分组进行计数。
下面是一个示例代码:
library(dplyr)
# 创建一个示例数据框
df <- data.frame(
group1 = c("A", "A", "B", "B", "C"),
group2 = c("X", "Y", "X", "Y", "Z"),
value1 = c(1, NA, 3, 4, 5),
value2 = c(NA, 2, 3, NA, 5)
)
# 按照group1和group2进行分组,并计算非NA值的数量
result <- df %>%
group_by(group1, group2) %>%
summarize(across(starts_with("value"), ~sum(!is.na(.))))
# 输出结果
print(result)
输出结果如下:
# A tibble: 5 x 4
# Groups: group1 [3]
group1 group2 value1 value2
<chr> <chr> <int> <int>
1 A X 1 0
2 A Y 0 1
3 B X 1 1
4 B Y 1 0
5 C Z 1 1
在这个示例中,我们按照group1
和group2
两列进行分组,并计算了value1
和value2
两列的非NA值的数量。最后的结果是一个包含分组列和计数结果的数据框。
这种方法可以用于各种情况,例如统计某个时间段内不同地区的销售数量、统计不同用户类型的访问次数等。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云