【问题标题】:Fill empty rows with values of different non-empty row用不同的非空行的值填充空行
【发布时间】:2016-06-28 21:15:21
【问题描述】:

我的问题涉及 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 == ""]

还有很多其他的概念,但它们都不起作用。 我可以请你帮忙吗?

【问题讨论】:

    标签: r row is-empty


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      这是一个玩具数据集:

      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))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-04
        • 1970-01-01
        • 2021-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-09
        • 2015-09-17
        相关资源
        最近更新 更多