如果某些数据帧缺少列,是否有方法在R中排序和垂直合并数据帧?

如果某些数据帧缺少列,是否有方法在R中排序和垂直合并数据帧?,r,R,我正在处理一组包含大量缺失数据的.csv文件,希望了解两个关键变量“上游数据”和“下游数据”的可用性。我使用for循环遍历每个文件,并为每个文件添加了一列,以指示是否可以使用mapply和function使用上游和下游数据 >NOXcolorcode <- function(x,y){ > if (is.na(x)){ > if (is.na(y)) { > colorcode <- "Neither&quo

我正在处理一组包含大量缺失数据的.csv文件,希望了解两个关键变量“上游数据”和“下游数据”的可用性。我使用for循环遍历每个文件,并为每个文件添加了一列,以指示是否可以使用mapply和function使用上游和下游数据

>NOXcolorcode <- function(x,y){
>    if (is.na(x)){
>        if (is.na(y)) {
>            colorcode <- "Neither"
>        } else {
>            colorcode <- "Upstream Only"
>        } 
>    }else if (is.na(y)) {
>        colorcode <- "Downstream Only"
>    } else {
>        colorcode <- "Both"
>    }
>    return(colorcode)
>}

>Dataframe$NOXavailable <- mapply(NOXcolorcode,NOXup, NOXdown)
有没有办法垂直绑定这些表?理想情况下,应采用这种格式:

    Upstream Only        Downstream Only   Both         Neither        VIN
1   903                  5426              135270       60744          LFNADMKJ6LAN07529
2   NA                   2690              5425         22201          LFNADMJJXLAX43537
......

非常感谢

您可以使用
dplyr::bind_rows
来处理缺少的列并将其分配给
NA
。如果您有数据帧
表1
表2
表5
请尝试:

result <- dplyr::bind_rows(mget(paste0('table', 1:5)))
结果答案(基数R)

首先使
nox可用
一个系数,具有固定水平:

NOXavailable <- factor(NOXavailable, levels = c("Upstream Only", "Downstream Only", "Both", "Neither"))
table(NOXavailable)
基本原理

系数强制
表格
显示系数的所有级别,即使它们为空

旁注


似乎您正在为列的每个条目调用
NOXcolorcode
。请注意,
is.na
是矢量化的,因此从技术上讲,您可以一次对整个列调用它。您可能只想编写一个函数,在整个列上运行
is.na
,然后分配所需的值。

您使用了什么代码来获取
表2
表4
?在for循环中生成了一个表变量,使用table()来计算每个颜色代码的频率。之后,我添加了“VIN”列。我在那里命名了表1、表2等,只是为了方便回答这个问题表$VIN表2
result <- dplyr::bind_rows(mget(paste0('table', 1:5)))
NOXavailable <- factor(NOXavailable, levels = c("Upstream Only", "Downstream Only", "Both", "Neither"))
table(NOXavailable)
NOXavailable
  Upstream Only Downstream Only            Both         Neither 
              0              47              53               0