如果数据集满足条件,如何用一个值替换,如果不满足另一个值,则如何替换数据集

问题描述 投票:0回答:2

我有一个包含 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 替换。

dplyr tidyverse
2个回答
1
投票

如果您想替换数据集中

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)


0
投票

还有一个

Base R
解决方案是:

apply(data, 2, function(x) ifelse(x=='A', 1, 0))
© www.soinside.com 2019 - 2024. All rights reserved.