老师您好:
我现在有2列数据,我的需求是:如果第1列某行的数值为空,就用该行的第2列的数值填充,
不用for循环,应该怎么办呢?
谢谢。


a1  a2
1   1
    2
1   3
    4
    5

......

    shang00122 可以试试ifelse()函数

        df<-data.frame(a1=c(2.1,NA,3.1,NA,NA,5.1),a2=c(1,3,5,6,7,9))
        df
        #>    a1 a2
        #> 1 2.1  1
        #> 2  NA  3
        #> 3 3.1  5
        #> 4  NA  6
        #> 5  NA  7
        #> 6 5.1  9
        df$a1<-ifelse(is.na(df$a1),df$a2,df$a1)
        df
        #>    a1 a2
        #> 1 2.1  1
        #> 2 3.0  3
        #> 3 3.1  5
        #> 4 6.0  6
        #> 5 7.0  7
        #> 6 5.1  9

    <sup>Created on 2020-11-28 by the reprex package (v0.3.0)</sup>

    shang00122

    df <- data.frame(a1 = c(2.1, NA, 3.1, NA, NA, 5.1), a2 = c(1, 3, 5, 6, 7, 9))
    df$a1[is.na(df$a1)] <- df$a2[is.na(df$a1)]
    df
    #>    a1 a2
    #> 1 2.1  1
    #> 2 3.0  3
    #> 3 3.1  5
    #> 4 6.0  6
    #> 5 7.0  7
    #> 6 5.1  9

    <sup>Created on 2020-11-28 by the reprex package (v0.3.0)</sup>

      library(data.table)
      
      dt = fread('
    a1, a2
    1, 1
    , 2
    1, 3
    , 4
    , 5')
      
      dt[is.na(a1), a1 := a2][]
    #>    a1 a2
    #> 1:  1  1
    #> 2:  2  2
    #> 3:  1  3
    #> 4:  4  4
    #> 5:  5  5

    <sup>Created on 2020-11-28 by the reprex package (v0.3.0)</sup>