用不同非空行的值填充空行

Fill empty rows with values of different non-empty row

我的问题与 R 中的编程有关。我的数据集如下所示: enter image description here

我想用来自列 distribution.type.

的适当值填充列 id_code 中的空行(空白不是 NA)

我的想法被使用了,即 mutate 函数 mutate(df$distribution.type [ifelse(df$id_code == "", df$distribution.type, df$id_code)]) 或类似这样的内容:

df$id_code[df$id_code == ""] <- df$distribution.type[df$id_code == ""]

和许多其他概念,但它们没有用。 我可以请求你的帮助吗?

这是一个玩具数据集:

df = data.frame('id_code'=c('','2','3',NA,''),'distribution.type'=c('A','B',NA,'D','E'),stringsAsFactors=F)

下面是一个子集解决方案(专门排除带有 NA 的行)。参见 Subsetting R data frame results in mysterious NA rows

df$id_code[!is.na(df$id_code) & df$id_code == ""] <- df$distribution.type[!is.na(df$id_code) & df$id_code == ""]

下面是使用 dplyr 的解决方案。也许看到

library(dplyr)
df <- mutate(df,id_code = ifelse(id_code == "", distribution.type, id_code))

这是一个使用 data.table 的选项。我们根据 'i' 中的条件将 'data.frame' 转换为 'data.table' (setDT(df)),即 'id_code' 为 '' 的行(blank),我们将(:=)'distribution.type的对应元素赋值。它正在分配,所以会很快。

library(data.table)
setDT(df)[id_code=='', id_code:= distribution.type]