Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用rbind.fill而不使用NA';s_R_Na_Rbind - Fatal编程技术网

是否可以使用rbind.fill而不使用NA';s

是否可以使用rbind.fill而不使用NA';s,r,na,rbind,R,Na,Rbind,我正在尝试将两个具有不同列数和列标题的数据帧组合在一起。但是,在我使用rbind.fill()组合它们之后,生成的文件用NA填充了空单元格 这非常不方便,因为其中一列的数据也表示为“NA”(北美),所以当我将其导入csv时,电子表格无法区分它们 我有没有办法: 使用rbind.fill函数,但不使用NA填充空单元格 或 更改列以替换NA值* *我浏览了博客,并尝试了两种最流行的解决方案: df$col[is.na(df$col)] <- 0, #it does not work df$co

我正在尝试将两个具有不同列数和列标题的数据帧组合在一起。但是,在我使用
rbind.fill()
组合它们之后,生成的文件用
NA
填充了空单元格

这非常不方便,因为其中一列的数据也表示为“NA”(北美),所以当我将其导入csv时,电子表格无法区分它们

我有没有办法:

  • 使用
    rbind.fill
    函数,但不使用NA填充空单元格
  • 更改列以替换NA值*
  • *我浏览了博客,并尝试了两种最流行的解决方案:

    df$col[is.na(df$col)] <- 0, #it does not work
    df$col = ifelse(is.na(df$col), "X", df$col), #it changes all the characters to numbers, and ruins the column
    

    df$col[is.na(df$col)]
    na
    “na”
    R
    不同,但您最喜欢的电子表格程序可能会这样解释
    NA
    R
    中的一个特殊值,就像
    NaN
    一样(不是数字)。如果我理解正确,您的解决方案之一是将代表北美的列中的“NA”值替换为其他值,在这种情况下,您应该能够做到

    df$col[ df$col == "NA" ] <- "NorthAmerica"
    
    方法来解决此问题 我认为您希望将“NA”和任何
    NA
    s保留在第一个df中,但将第二个df中由
    rbind.fill()形成的所有
    NA
    更改为类似“NotAvailable”的内容。你可以这样做

    df1 <- data.frame( col = rep( "NA" , 6 ) , x = 1:6 , z = rep( 1 , 6 ) )
    df2 <- data.frame( col = rep( "SA" , 2 ) , x = 1:2 , y = 5:6 )
    df <- rbind.fill( df1 , df2 )
    temp <- df [ (colnames(df) %in% colnames(df2)) ]
    temp[ is.na( temp ) ] <- "NotAvailable"
    res <- cbind( temp , df[ !( colnames(df) %in% colnames(df2) ) ] )
    
    #df has real NA values in column z and column y. We just want to get rid of y's
    df
    
    #     col x  z  y
    #   1  NA 1  1 NA
    #   2  NA 2  1 NA
    #   3  NA 3  1 NA
    #   4  NA 4  1 NA
    #   5  NA 5  1 NA
    #   6  NA 6  1 NA
    #   7  SA 1 NA  5
    #   8  SA 2 NA  6
    
    #res has "NA" strings in col representing "North America" and NA values in z, whilst those in y have been removed
    #More generally, any NA in df1 will be left 'as-is', whilst NA from df2 formed using rbind.fill will be converted to character string "NotAvilable"
    res
    
    #     col x            y  z
    #   1  NA 1 NotAvailable  1
    #   2  NA 2 NotAvailable  1
    #   3  NA 3 NotAvailable  1
    #   4  NA 4 NotAvailable  1
    #   5  NA 5 NotAvailable  1
    #   6  NA 6 NotAvailable  1
    #   7  SA 1            5 NA
    #   8  SA 2            6 NA
    

    df1
    NA
    “NA”
    R
    不同,但您最喜欢的电子表格程序可能会这样解释
    NA
    R
    中的一个特殊值,就像
    NaN
    一样(不是数字)。如果我理解正确,您的解决方案之一是将代表北美的列中的“NA”值替换为其他值,在这种情况下,您应该能够做到

    df$col[ df$col == "NA" ] <- "NorthAmerica"
    
    方法来解决此问题 我认为您希望将“NA”和任何
    NA
    s保留在第一个df中,但将第二个df中由
    rbind.fill()形成的所有
    NA
    更改为类似“NotAvailable”的内容。你可以这样做

    df1 <- data.frame( col = rep( "NA" , 6 ) , x = 1:6 , z = rep( 1 , 6 ) )
    df2 <- data.frame( col = rep( "SA" , 2 ) , x = 1:2 , y = 5:6 )
    df <- rbind.fill( df1 , df2 )
    temp <- df [ (colnames(df) %in% colnames(df2)) ]
    temp[ is.na( temp ) ] <- "NotAvailable"
    res <- cbind( temp , df[ !( colnames(df) %in% colnames(df2) ) ] )
    
    #df has real NA values in column z and column y. We just want to get rid of y's
    df
    
    #     col x  z  y
    #   1  NA 1  1 NA
    #   2  NA 2  1 NA
    #   3  NA 3  1 NA
    #   4  NA 4  1 NA
    #   5  NA 5  1 NA
    #   6  NA 6  1 NA
    #   7  SA 1 NA  5
    #   8  SA 2 NA  6
    
    #res has "NA" strings in col representing "North America" and NA values in z, whilst those in y have been removed
    #More generally, any NA in df1 will be left 'as-is', whilst NA from df2 formed using rbind.fill will be converted to character string "NotAvilable"
    res
    
    #     col x            y  z
    #   1  NA 1 NotAvailable  1
    #   2  NA 2 NotAvailable  1
    #   3  NA 3 NotAvailable  1
    #   4  NA 4 NotAvailable  1
    #   5  NA 5 NotAvailable  1
    #   6  NA 6 NotAvailable  1
    #   7  SA 1            5 NA
    #   8  SA 2            6 NA
    

    df1如果您有一个包含NA的数据帧,并且您想全部替换它们,您可以执行以下操作:

    df[is.na(df)] <- -999
    

    df[is.na(df)]如果您有一个包含na的数据帧,并且您想替换它们,那么您可以执行以下操作:

    df[is.na(df)] <- -999
    

    df[is.na(df)]字符串“它不工作”不是R中的内置错误消息。请提供。如果您无法共享数据框,请举一个小例子来复制您的问题。您是否尝试过更改write.csv的“na”选项?Jack-对不起,我的意思是它对我的电子表格没有影响。我运行它时没有出现错误,但出现了一条警告消息:在
    [blind Jesse-您的解决方案有效,但它替换了电子表格中的所有NA,但我只想替换一个特定列。有什么想法吗?字符串“it not work”不是R中的内置错误消息。请提供。如果您无法共享数据帧,请制作一个小示例来复制您的问题。您是否尝试更改write.csv的“na”选项?Jack-抱歉,我的意思是它对我的电子表格没有影响。我运行它时没有错误,但有一条警告消息:in
    [盲Jesse-你的解决方案有效,但它替换了电子表格中的所有NA,但我只想替换一个特定列。有什么想法吗?我在原始问题中尝试过,但不幸的是,它对我的电子表格没有影响。谢谢!我在原始问题中尝试过,但不幸的是,它对我的电子表格没有影响。谢谢!实际上,北美的“NA”值是固定的。我想将“null”NA值更改为其他值,例如“-”@David下面的解决方案对您有效吗?是否需要进一步调整?感谢Simon的帮助。我实际上无法获得x[is.NA(x)]您好@David,我将编辑我的答案,以便您能更清楚地看到步骤。我想我们可能在rbind.fill阶段沟通错误。@David edited-让我知道这是否是您所期望的。实际上,北美的“NA”值是固定的。我想将“null”NA值更改为其他值,例如“-”@David下面的解决方案对你有用吗?是否需要进一步调整?感谢Simon的帮助。我实际上无法获得x[is.na(x)]嗨@David,我将编辑我的答案,以便你能更清楚地看到步骤。我想我们可能在rbind.fill阶段沟通错误。@David编辑-让我知道这是否是你所期望的。