У меня есть пустой фрейм данных, который я хочу заполнить, используя другой фрейм данных - PullRequest
1 голос
/ 23 марта 2019

У меня есть пустой фрейм данных, который является моим шаблоном

temp <- data.frame(matrix(ncol=3)) colnames(temp) <- c("variable", "group", "bin")

И еще один фрейм данных, в котором есть подробности:

info <- data.frame(group_abc = c("1", "2", "2", "3", "3", "3"), bin_abc = c("0-700", "700-750", "750-800", "800-850", "850-900", "900-950"))

Я хочу, чтобы имя переменной было "group_abc", а group должен иметь значения group_abc, а bin - значения bin_abc.

Когда я пытался использовать значения из фрейма данных, выдает ошибку: Error in $ <-. Data.frame <code>( tmp , group, value = c("0-699", "700-750", : replacement has 6 rows, data has 1

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Просто присвойте (значение) существующего фрейма данных новому имени, но измените имена столбцов, что можно сделать одним простым шагом:

 info <- data.frame(group_abc = c("1", "2", "2", "3", "3", "3"), bin_abc = c("0-700", "700-750", "750-800", "800-850", "850-900", "900-950"))
 temp <- setNames( info, c("group", "bin"))

> temp
  group     bin
1     1   0-700
2     2 700-750
3     2 750-800
4     3 800-850
5     3 850-900
6     3 900-950

Если вы хотели получить только часть существующего фрейма данныхчтобы получить дубликаты, вы могли бы выбрать либо строки, либо столбцы, либо и то и другое, используя «[» в аргументе info с вызовом setNames.

0 голосов
/ 23 марта 2019

Эту проблему можно решить, настроив временный фрейм данных так, чтобы при инициализации было правильное количество строк, а также правильное количество столбцов.

info <- data.frame(group_abc = c("1", "2", "2", "3", "3", "3"), bin_abc = c("0-700", "700-750", "750-800", "800-850", "850-900", "900-950"))

temp           <- data.frame(matrix(ncol=3, nrow = nrow(info))) 
colnames(temp) <- c("variable", "group", "bin")

temp$group <- info$group_abc
temp$bin   <- info$bin_abc
...