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

R语言:数据框条件合并A/C组合、替换值及统计F出现行数

针对给定tibble的R语言问题解答

先复现你的数据:

library(tibble)

df <- tribble(
  ~Variable_1, ~Variable_2, ~Variable_3,
  "A", "C", "F",
  NA, NA, "E",
  "C", "A", NA,
  "F", "C", "A"
)

问题1:筛选任意列同时包含A和C的行

要找出每行同时存在"A"和"C"的记录,用rowSums统计每行中A、C的出现次数,只要两者都至少出现1次就保留:

# 筛选同时包含A和C的行
df_ac <- df[rowSums(df == "A", na.rm = TRUE) >= 1 & rowSums(df == "C", na.rm = TRUE) >= 1, ]

运行后得到的df_ac对应原始数据的第1、3、4行。

问题2:将A-C或C-A的组合统一替换为X

把每行里的"A"和"C"(不管顺序)都替换成"X",两种实现方式:

# 方法1:基础R写法
df_replaced <- df
df_replaced[df_replaced %in% c("A", "C")] <- "X"

# 方法2:dplyr写法(需先加载dplyr包)
library(dplyr)
df_replaced <- df %>% mutate_all(~replace(., . %in% c("A", "C"), "X"))

替换后的数据框结果:

# A tibble: 4 × 3
  Variable_1 Variable_2 Variable_3
  <chr>      <chr>      <chr>     
1 X          X          F         
2 NA         NA         E         
3 X          X          NA        
4 F          X          X  

问题3:统计包含F的行数

只要每行任意一列有"F"就算,用rowSums判断每行是否存在F,再求和:

# 统计包含F的行数
count_f <- sum(rowSums(df == "F", na.rm = TRUE) >= 1)

运行后count_f的值为2,对应原始数据的第1、4行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:07:39