R用相邻行中的值替换NA

R用相邻行中的值替换NA,r,zoo,R,Zoo,我有一个带有两列的数据帧“df”。第2列包含有效字符串和用“NA”填充的缺失值 输入示例: > df ENSMMUG00000023296 PGBD2 ENSMMUG00000036181 U6 ENSMMUG00000064799 NA ENSMMUG00000057389 LYPD8 > df ENSMMUG00000023296 PGBD2 ENSMMUG00000036181 U6 ENSMMUG00000064799 ENSMMUG00000064799 ENSM

我有一个带有两列的数据帧“df”。第2列包含有效字符串和用“NA”填充的缺失值

输入示例:

> df

ENSMMUG00000023296 PGBD2 
ENSMMUG00000036181 U6
ENSMMUG00000064799 NA
ENSMMUG00000057389 LYPD8
> df

ENSMMUG00000023296 PGBD2 
ENSMMUG00000036181 U6
ENSMMUG00000064799 ENSMMUG00000064799
ENSMMUG00000057389 LYPD8
我想用第1列中的相应值替换“NA”值。以实现以下输出

所需输出示例:

> df

ENSMMUG00000023296 PGBD2 
ENSMMUG00000036181 U6
ENSMMUG00000064799 NA
ENSMMUG00000057389 LYPD8
> df

ENSMMUG00000023296 PGBD2 
ENSMMUG00000036181 U6
ENSMMUG00000064799 ENSMMUG00000064799
ENSMMUG00000057389 LYPD8
我试图使用zoo包中的na.locf工具来实现这一点,但我不明白如何指定替换值应从第1列中获取

失败的尝试:

> library(zoo)
> na.locf(df)

ENSMMUG00000023296 PGBD2 
ENSMMUG00000036181 U6
ENSMMUG00000064799 U6
ENSMMUG00000057389 LYPD8

另一个选项,假设您有一个data.frame,其中列为“column1”和“column2”

库(dplyr)
df#A tible:4 x 2
#>第1栏第2栏
#>                   
#>1 ENSMMUG00000023296 PGBD2
#>2 ENSMMUG00000036181 U6
#>3 ENSMMUG00000064799
#>4 ENSMMUG00000057389 LYPD8
突变(df,column2=ifelse(is.na(column2),column1,column2))
#>#tibble:4 x 2
#>第1栏第2栏
#>                              
#>1 ENSMMUG00000023296 PGBD2
#>2 ENSMMUG00000036181 U6
#>3 Ensmug00000064799 Ensmug00000064799
#>4 ENSMMUG00000057389 LYPD8

另一个选项,假设您有一个data.frame,其中包含列“column1”和“column2”

库(dplyr)
df#A tible:4 x 2
#>第1栏第2栏
#>                   
#>1 ENSMMUG00000023296 PGBD2
#>2 ENSMMUG00000036181 U6
#>3 ENSMMUG00000064799
#>4 ENSMMUG00000057389 LYPD8
突变(df,column2=ifelse(is.na(column2),column1,column2))
#>#tibble:4 x 2
#>第1栏第2栏
#>                              
#>1 ENSMMUG00000023296 PGBD2
#>2 ENSMMUG00000036181 U6
#>3 Ensmug00000064799 Ensmug00000064799
#>4 ENSMMUG00000057389 LYPD8

假设您有两列,您可以简单地使用以下内容:-

df$column2[is.na(df$column2)] <- df$column1[is.na(df$column2)]


df$column2[is.na(df$column2)]假设您有两列,您可以简单地使用以下命令:-

df$column2[is.na(df$column2)] <- df$column1[is.na(df$column2)]


df$column2[is.na(df$column2)]只需执行
df$col2[is.na(df$col2)]只需执行
df$col2[is.na(df$column2)]如果您确定
df$column1
上没有缺失值,您也可以执行
变异(df,column2=合并(column2,column1)
。如果您确定
df$column1
上没有缺失值,您也可以执行
变异(df,column2=coalesce(column2,column1)
。我现在看到了您的注释,是的,它是相同的。我现在看到了您的注释,是的,它是相同的。