我有一个看起来像这样的data.frame:
DF col1 col2 col3 col4 Name_1 0.3 Sample1 NA Name_2 0.2 Sample2 NA Name_3 0.9 Sample3 1 Name_4 0.4 Sample4 NA Name_5 0.2 Sample5 2
我想将col2中的数值替换为0,而在col4中有一个数字。 换句话说,所需的输出将是:
DF col1 col2 col3 col4 Name_1 0.3 Sample1 NA Name_2 0.2 Sample2 NA Name_3 0 Sample3 1 Name_4 0.4 Sample4 NA Name_5 0 Sample5 2
有人能帮帮我吗?
答案 0 :(得分:3)
您可以使用is.na
输出的否定来查找col4
不是NA
的位置。
where.notNA <- !is.na(DF$col4)
此逻辑向量可用于选择要分配给0的col2中的行:
DF$col2[where.notNA] <- 0
所以,作为一个单行:
DF$col2[!is.na(DF$col4)] <- 0
答案 1 :(得分:1)
@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