如何在数据框中使用 NA 进行列乘法?
How to do column multiplication with NAs in dataframe?
例如,如果这是我的 df。
df<-data.frame(a=c(1,0,1,1,0), b=c(1,NA,NA,3,5),c=c(NA,2,4,NA,NA))
df
a b c
1 1 NA
0 NA 2
1 NA 4
1 3 NA
0 5 NA
我想创建一个函数,当 a
列中的值等于 1 时,将 b
和 c
列与标量 2 相乘,并将两个 b
和 c
列,当列 a
中的值等于 0 时,标量为 4。
此外,我不想删除任何 NA 或将它们转换为 0,因此所有 NA 单元格都应提醒相同。预期结果如下所示。
a b c
1 2 NA
0 NA 8
1 NA 8
1 6 NA
0 20 NA
我尝试使用na.rm或na.omit,但它们并不能真正满足我的需要。对此的任何帮助将不胜感激。提前致谢!
df[df$a==0,-1]=df[df$a==0,-1]*4
df[df$a==1,-1]=df[df$a==1,-1]*2
df
a b c
1 1 2 NA
2 0 NA 8
3 1 NA 8
4 1 6 NA
5 0 20 NA
例如,如果这是我的 df。
df<-data.frame(a=c(1,0,1,1,0), b=c(1,NA,NA,3,5),c=c(NA,2,4,NA,NA))
df
a b c
1 1 NA
0 NA 2
1 NA 4
1 3 NA
0 5 NA
我想创建一个函数,当 a
列中的值等于 1 时,将 b
和 c
列与标量 2 相乘,并将两个 b
和 c
列,当列 a
中的值等于 0 时,标量为 4。
此外,我不想删除任何 NA 或将它们转换为 0,因此所有 NA 单元格都应提醒相同。预期结果如下所示。
a b c
1 2 NA
0 NA 8
1 NA 8
1 6 NA
0 20 NA
我尝试使用na.rm或na.omit,但它们并不能真正满足我的需要。对此的任何帮助将不胜感激。提前致谢!
df[df$a==0,-1]=df[df$a==0,-1]*4
df[df$a==1,-1]=df[df$a==1,-1]*2
df
a b c
1 1 2 NA
2 0 NA 8
3 1 NA 8
4 1 6 NA
5 0 20 NA