首页 > 解决方案 > 如何根据部分条件设置 NA?

问题描述

这是我的示例数据集

df = structure(list(v1 = c(1, 2, 3, 4), v2 = c("x a", "x a", "3", 
"x a"), v3 = c("x b", "x b", "x a", "x b"), v4 = c("x c", "x c", 
"x b", "x c"), v5 = c("1", "2", "x c", "4"), v6 = c(1, 2, 3, 
4)), row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"
))

我需要将所有不包含该字符的单元格设置"x"NA

期望的输出

structure(list(v1 = c(NA, NA, NA, NA), v2 = c("x a", "x a", "NA", 
"x a"), v3 = c("x b", "x b", "x a", "x b"), v4 = c("x c", "x c", 
"x b", "x c"), v5 = c("NA", "NA", "x c", "NA"), v6 = c(NA, NA, NA, 
NA)), row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"
))

标签: r

解决方案


我们能做的

df[] <- replace(as.matrix(df), !grepl('x', as.matrix(df)), NA)

推荐阅读