Как создать пустой фрейм данных с указанными столбцами И количеством строк в R? - PullRequest
0 голосов
/ 10 мая 2019

У меня есть два кадра данных, которые я хочу иметь возможность связывать вместе. Они содержат похожую информацию, но не в том же порядке и не с одинаковыми именами столбцов (а это смесь строк, целых и действительных чисел, поэтому матрицы не будут работать).

Затем мне нужно преобразовать один из фреймов данных (назовем его 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

  • Очевидно, что это не работает, так как я пытаюсь добавить другое количество строк

1 Ответ

1 голос
/ 10 мая 2019

Если я правильно понял вопрос, следующий хак будет делать то, что хочет ОП.Он создает количество строк, напрямую устанавливая атрибут 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))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...