我想将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)
有什么想法吗?
答案 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))