根据一列值替换data.frame中的数值

根据一列值替换data.frame中的数值,r,R,我有一个data.frame,看起来像: 当col4中有一个数字时,我想用0替换col2中的数值。 换句话说,期望的输出将是: 有人能帮我吗 您可以使用is.na输出的求反来查找col4不是na的位置 where.notNA <- !is.na(DF$col4) where.notNA您可以使用is.na输出的否定来查找col4不是na where.notNA <- !is.na(DF$col4) where.notNA@Mattrition的答案是最好的,但这里有一个ifels

我有一个data.frame,看起来像:

当col4中有一个数字时,我想用0替换col2中的数值。 换句话说,期望的输出将是:


有人能帮我吗

您可以使用
is.na
输出的求反来查找
col4
不是
na
的位置

where.notNA <- !is.na(DF$col4)

where.notNA您可以使用
is.na
输出的否定来查找
col4
不是
na

where.notNA <- !is.na(DF$col4)

where.notNA@Mattrition的答案是最好的,但这里有一个
ifelse
方法

> DF$col2 <- ifelse(!is.na(DF$col4), 0, DF$col2) 
> DF
##     col1 col2    col3 col4
## 1 Name_1  0.3 Sample1   NA
## 2 Name_2  0.2 Sample2   NA
## 3 Name_3  0.0 Sample3    1
## 4 Name_4  0.4 Sample4   NA
## 5 Name_5  0.0 Sample5    2
>DF$col2 DF
##col1 col2 col3 col4
##1个名称\u 1 0.3样本1 NA
##2名称2 0.2样本2 NA
##3名称\u 3 0.0样本3 1
##4名称4 0.4样本4 NA
##5 Name_5 0.0样本5 2

@Mattrition的答案是最好的,但这里有一个
ifelse
方法

> DF$col2 <- ifelse(!is.na(DF$col4), 0, DF$col2) 
> DF
##     col1 col2    col3 col4
## 1 Name_1  0.3 Sample1   NA
## 2 Name_2  0.2 Sample2   NA
## 3 Name_3  0.0 Sample3    1
## 4 Name_4  0.4 Sample4   NA
## 5 Name_5  0.0 Sample5    2
>DF$col2 DF
##col1 col2 col3 col4
##1个名称\u 1 0.3样本1 NA
##2名称2 0.2样本2 NA
##3名称\u 3 0.0样本3 1
##4名称4 0.4样本4 NA
##5 Name_5 0.0样本5 2
DF$col2[!is.na(DF$col4)] <- 0
> DF$col2 <- ifelse(!is.na(DF$col4), 0, DF$col2) 
> DF
##     col1 col2    col3 col4
## 1 Name_1  0.3 Sample1   NA
## 2 Name_2  0.2 Sample2   NA
## 3 Name_3  0.0 Sample3    1
## 4 Name_4  0.4 Sample4   NA
## 5 Name_5  0.0 Sample5    2