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

时间:2016-03-13 23:35:36

标签: r row is-empty

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

我想从列id_code填充空(空白而非空白)行,并使用distribution.type列中的相应值填充。

我使用了我的想法,即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 == ""]

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

2 个答案:

答案 0 :(得分:0)

这是一个玩具数据集:

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的解决方案。也许请参阅https://stackoverflow.com/a/28592577/2176211

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

答案 1 :(得分:0)

以下是使用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]