我有两个数据框,希望能够一起绑定。它们中具有相似的信息,但顺序不同,列名称也不相同(这是字符串,整数和实数的混合,因此矩阵将不起作用)。
然后我要做的是将一个数据帧(我们称为new_df)转换为与另一个数据帧(我们称为old_df
)相同的结构。
我想创建一个空数据框,其列结构为old_df
,并且行数与new_df
相同。
我知道我可以使用empty_df <- old_df[0,]
创建其中的第一部分,但是如何指定行数?
我知道我要结束的行数,所以我想指定它。我在任何地方都找不到。
我想要的是这样的东西(如果可行的话):
empty_df <- old_df[rep(0,nrow(new_df)),]
我尝试过:
empty_df <- old_df[rep(0,nrow(new_df)),]
old_df[0,]
的0行相同 empty_df <- old_df[0,]
empty_df$ID <- new_df$ids
答案 0 :(得分:1)
如果我正确理解了这个问题,那么下面的破解将起到OP想要的作用。它通过直接设置row.names
属性来创建行数。而且,如果数据框具有行名,则它必须具有相应的行。
empty_df <- old_df[0, ]
attr(empty_df, 'row.names') <- 1:nrow(new_df)
str(empty_df)
#'data.frame': 300 obs. of 5 variables:
# $ Sepal.Length: num
# $ Sepal.Width : num
# $ Petal.Length: num
# $ Petal.Width : num
# $ Species : Factor w/ 3 levels "setosa","versicolor",..:
数据框empty_df
现在有300行。
数据创建代码。
测试数据创建代码使用内置数据集iris
。
set.seed(1234)
old_df <- iris
new_df <- rbind(iris, iris)
new_df <- new_df[, sample(ncol(new_df))]