You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用tidyverse为数据框添加统计每行指定值出现次数的新列?

解决方案

这里提供两种基于tidyverse的实现方式,都能帮你给数据框添加统计每行等于5的列数的新列V4:

方法1:使用rowwise + c_across

这种方式逻辑直观,逐行处理选中的列:

library(tidyverse)

df <- data.frame(V1 = c(1,2,5,5,3),
                 V2 = c(1,5,5,5,5),
                 V3 = c(1,3,4,5,1))

df <- df %>%
  rowwise() %>%
  # c_across(V1:V3)选中需要统计的列,判断是否等于5后求和
  mutate(V4 = sum(c_across(V1:V3) == 5)) %>%
  ungroup() # 取消逐行模式,避免影响后续操作

方法2:使用mutate + rowSums

你之前尝试的rowSums完全可以在tidyverse中使用,核心是先生成布尔值矩阵再求和:

df <- df %>%
  # select(., V1:V3)选中目标列,生成"等于5"的布尔矩阵,rowSums统计每行TRUE的数量
  mutate(V4 = rowSums(select(., V1:V3) == 5))

扩展:统计所有列的情况

如果不需要指定列,想统计所有列中等于5的数量,把V1:V3换成everything()即可:

# 方法1适配
df <- df %>%
  rowwise() %>%
  mutate(V4 = sum(c_across(everything()) == 5)) %>%
  ungroup()

# 方法2适配
df <- df %>%
  mutate(V4 = rowSums(select(., everything()) == 5))

内容的提问来源于stack exchange,提问作者Lucca Nielsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:03:21