使用NA条件将一列粘贴到另一列

时间:2016-01-14 16:36:30

标签: r conditional paste na

我想将col3粘贴到col1,但会在NAs中避免col1

我的意见:

df <- "col1 col2 col3
       100   x   102
       105   x   106
       101   x   NA"
df <- read.table(text=df, header=T)

我的预期输出:

dfout <- "col1 col2 col3
       102   x   102
       106   x   106
       101   x   NA"
dfout <- read.table(text=dfout, header=T)

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

通过它的声音,类似下面的内容应该按照你的描述进行:

df$col1[!is.na(df$col3)] <- na.omit(df$col3)

或者,但遵循相同的概念,将是:

df$col1 <- replace(df$col1, !is.na(df$col3), na.omit(df$col3))

答案 1 :(得分:2)

我们也可以使用data.table并分配(:=),这样可以提高效率。

library(data.table)
setDT(df)[!is.na(col3), col1:= col3]
df
#  col1 col2 col3
#1:  102    x  102
#2:  106    x  106
#3:  101    x   NA

答案 2 :(得分:1)

您可以使用ifelse()

df$col1 <- ifelse(is.na(df$col3), df$col1, df$col3)

这也可以与dplyr一起使用:

library(dplyr)
df <- mutate(df, col1 = ifelse(is.na(col3), col1, col3))