- 已编辑
老师您好:
我现在有2列数据,我的需求是:如果第1列某行的数值为空,就用该行的第2列的数值填充,
不用for循环,应该怎么办呢?
谢谢。
a1 a2
1 1
2
1 3
4
5
......
老师您好:
我现在有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>
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>