追加包含列名的df以分隔没有列名但对应数据点的df

Append df containing column names to separate df without column names but corresponding datapoints

我实际上是在尝试将列名添加到没有列名的数据框中。我有两个数据框,其中一个的尺寸为 1 x 95(1 行包含 95 个值,这些值是对应于第二个 df 的 95 列的列名,其尺寸为 146048 x 95 但没有列名)。我不能使用 rbind,因为两个 df 显然没有相同的列名,并且出于某种原因,当我使用 'append' 时,它会使结果 df 中的列数加倍(尺寸 = 146048 x 190)。有人知道为什么我使用 'append' 时会发生这种情况吗?任何人都可以提出一个解决方案来实现我想要做的事情吗?

谢谢!

这样的事情怎么样。在下面的示例中,x 是一个数据框,vn 也是一个数据框,但它的唯一行包含 x 的变量名称。您可以在 x 上使用 setNames() 将其名称更改为 vn 的第一行。

x <- matrix(rnorm(10), ncol=5)
x <- as.data.frame(x)
x
#          V1       V2        V3        V4         V5
# 1 0.1600919 1.375629 0.2838454  1.403162  0.7560366
# 2 0.3596158 1.594954 0.6369160 -1.368186 -0.2590074
vn <- matrix(paste("var", 1:5, sep="_"), nrow=1)
vn <- as.data.frame(vn)
x <- setNames(x, vn[1,])
x
#       var_1    var_2     var_3     var_4      var_5
# 1 0.1600919 1.375629 0.2838454  1.403162  0.7560366
# 2 0.3596158 1.594954 0.6369160 -1.368186 -0.2590074   

这很容易。

假设我们有一个像这样的 3 列和 2 行的空数据框:

df.a <- as.data.frame(matrix(nrow = 2, ncol = 3))

然后我们有一个 3 列和 1 行的数据框,如下所示:

df.b <- as.data.frame(c("one","two","three"))

要将 df.b 的第一行作为列名分配给 df.a,我们这样做:

names(df.b) <- df.b[,1]

这意味着子集 df.b 占据第一行 - 这将是 3 个元素的字符向量 - 与我们必须命名的列一样多。我们将这个向量分配给另一个数据框中的列的名称。在您的情况下,它是 95 列,但只要两个数据框中的长列号匹配,就没有关系。

当您想要更正列名时,使用此语法通常很方便 - 您基本上可以就地编辑列名。例如 names(df.a) <- gsub("\.$", "", names(df.a) 将删除列名中的尾随点(替换为空)。