【问题标题】:How to replace the empty cells in r如何替换r中的空单元格
【发布时间】:2017-05-23 12:38:40
【问题描述】:

我在 R 中有一个 data.frame,想以特定方式填充一些空单元格。下面是表格。

Case.ID   |   Resource
-----------------------
   1      |     501
-----------------------
   1      | 
-----------------------
   1      |      0
-----------------------
   1      |      
-----------------------
   2      |    524
-----------------------

在这里,我想将空单元格替换为每个 Case.ID 的第一个值,在这种情况下,将 Case.ID = 1 的空单元格替换为 501,而不是 0。

【问题讨论】:

标签: r csv dataframe replace


【解决方案1】:

您可以在基础 R 中使用 replace

with(df, ave(v2, v1, FUN = function(i) replace(i, i == '', i[1])))

【讨论】:

    【解决方案2】:

    假设文件中的空格被导入为NA,这将使用dplyr 工作

    library(dplyr)
    
    # Create data frame to match post
    df <- data.frame(Case.ID = c(1, 1, 1, 1, 2),
                     Resource = c(501, NA, 0, NA, 524))
    
    df <- df %>%
      group_by(Case.ID) %>%
      mutate(Resource = if_else(is.na(Resource), head(Resource, 1), Resource))
    
    df
    # Case.ID Resource
    # <dbl>    <dbl>
    #    1      501
    #    1      501
    #    1        0
    #    1      501
    #    2      524
    

    【讨论】:

    • 你可以用first(Resource)代替head()
    • 你是对的,当然。显然需要更多的咖啡
    【解决方案3】:

    我们可以使用data.table

    library(data.table)
    setDT(df1)[, v1 := Resource[1L], Case.ID][is.na(Resource), Resource := v1][, v1 := NULL][]  
    

    或者另一个选项是na.aggregate

    library(zoo)
    setDT(df)[, Resource := na.aggregate(Resource, FUN = function(x) x[1]), Case.ID]
    

    【讨论】:

      【解决方案4】:

      只要将其导入 R(假设为 df),空的就会转换为 NA。因此:

        Case.ID Resource
      1       1      501
      2       1       NA
      3       1        0
      4       1       NA
      5       2      524
      

      因此:

      df$Resource<-ifelse(is.na(df$Resource),df$Case.ID,df$Resource)
      

      屈服:

      Case.ID Resource
      1       1      501
      2       1        1
      3       1        0
      4       1        1
      5       2      524
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-16
        • 1970-01-01
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 2021-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多