首页 > 解决方案 > 在 r 中自动更改向量的条目值

问题描述

我有以下向量x

  x = [
    60
    
    60
    
    80
    
    0
    
    0
    
    1
    
    2]

我想在 r 中重写一个代码,它可以“自动”将上述向量x转换为:

    x = [
        1960
        
        1960
        
        1980
        
        2000
        
        2000
        
        2001
        
        2002]

我写了下面的代码,但它不起作用。

x[x>=60 && x<=80] <- 1900 + x
x[x>=0 && x<=2] <- 2000 + x

任何帮助将不胜感激。

标签: rconcatenation

解决方案


我们可以case_when在一行中使用

library(dplyr)
case_when(x >=60 & x <= 80 ~ 1900 + x, x >= 0 & x <=2 ~ 2000 + x, TRUE ~ x)

-输出

x
#[1] 1960 1960 1980 2000 2000 2001 2002

ifelse使用base R

ifelse(x >=0 & x <= 2, 2000 + x, 1900 + x)

数据

x <- c(60, 60, 80, 0, 0, 1, 2)

推荐阅读