Dataframe NA转换为特定项目

问题描述 投票:-1回答:2

我有一个类似的数据框;

dataframe <- data.frame(ID1=c(NA,2,3,1,NA,2),ID2=c(1,2,3,1,2,2))

现在,我想将NA值转换为与下一栏有价值的值相同的有价值的值;

dataframe <- data.frame(ID1=c(1,2,3,1,2,2),ID2=c(1,2,3,1,2,2))

我想我应该使用if函数,但是我想使用%>%进行简化。请教我。

r dataframe na
2个回答
1
投票

ifelse解决方案

dataframe <- within(dataframe, ID1 <- ifelse(is.na(ID1),ID2,ID1))

诸如此类

> dataframe
  ID1 ID2
1   1   1
2   2   2
3   3   3
4   1   1
5   2   2
6   2   2

0
投票

一个dplyr(使用%>%)解决方案:

sanitized <- dataframe %>% 
  mutate(ID1 = ifelse(is.na(ID1), ID2, ID1))

0
投票

一种简单的解决方案是找出NA值,并将其替换为相应的列值。

inds <- is.na(dataframe$ID1)
dataframe$ID1[inds] <- dataframe$ID2[inds]

但是,由于需要管道解决方案,因此可以使用dplyr的合并

library(dplyr)
dataframe %>%  mutate(ID1 = coalesce(ID1, ID2))
© www.soinside.com 2019 - 2024. All rights reserved.