我有一个包含 30 列的数据集。一个例子看起来像这样
data <- data.frame(name=c("A", "B", "C", "D", "E", "C", "A", "B"),
place=c("B", "c", "F", "C", "G", "A", "H", "A"))
现在,如果 name=A,我想用值 1 替换整个数据集,如果不等于 1,则用 0 替换。
如果您想替换数据集中
name == 'A'
所在的行,您可以执行以下操作,
library(dplyr)
data <- data.frame(name=c("A", "B", "C", "D", "E", "C", "A", "B"),
place=c("B", "c", "F", "C", "G", "A", "H", "A"))
data %>%
mutate(
across(.fns = ~ if_else(name == "A", 1, 0))
)
#> name place
#> 1 1 1
#> 2 0 0
#> 3 0 0
#> 4 0 0
#> 5 0 0
#> 6 0 0
#> 7 1 1
#> 8 0 0
由 reprex 包于 2023 年 1 月 6 日创建(v2.0.1)
或者,如果您想用 1 或 0 替换
'A'
的所有数据值,
library(dplyr)
data <- data.frame(
name = c("A", "B", "C", "D", "E", "C", "A", "B"),
place = c("B", "c", "F", "C", "G", "A", "H", "A")
)
data %>%
mutate(
across(.fns = ~ if_else(.x == "A", 1, 0))
)
#> name place
#> 1 1 0
#> 2 0 0
#> 3 0 0
#> 4 0 0
#> 5 0 0
#> 6 0 1
#> 7 1 0
#> 8 0 1
由 reprex 包于 2023 年 1 月 6 日创建(v2.0.1)
还有一个
Base R
解决方案是:
apply(data, 2, function(x) ifelse(x=='A', 1, 0))