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
相关产品推荐
相关产品推荐

