#r #dataframe
#r #фрейм данных
Вопрос:
Я пытаюсь повторно связать данные с другой дополнительной строкой. Но я продолжаю получать следующую ошибку:
Error in `.rowNamesDF<-`(x, value = value) :
duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names': ‘1’, ‘2’, ‘3’, ‘4’
Я почти уверен, что это связано с тем фактом, что мой фрейм данных имеет фрейм данных внутри фрейма данных.
class(data)
[1] "dfidx_mlogit" "dfidx" "data.frame" "mlogit.data"
Мой вопрос в том, как мне повторно связать данные с другой строкой или другим набором данных аналогичного размера, если в фрейм данных встроен фрейм данных. Или как мне отделить фрейм данных от встроенного фрейма данных?
Это то, что я пытаюсь заставить работать:
#Row bind the dataset with itself.
new_data=rbind(data,data)
Обратите внимание, что это усеченное подмножество набора данных, которое включает числовые и строковые переменные, поэтому использование as.numeric для меня не работает, потому что это переменные со строковым значением NA
Вот данные:
data=structure(list(EDUC = c(4L, 4L, 4L, 4L), HEALTH = c(3L, 3L, 3L,
3L), idx = structure(list(chid = c(1L, 1L, 1L, 1L), unique_id = c(3000175513,
3000175513, 3000175513, 3000175513), alt = structure(1:4, .Label = c("Bicycle",
"Car", "Metro", "Walking"), class = "factor")), ids = c(1, 1,
2), row.names = c(NA, 4L), class = c("idx", "data.frame"))), row.names = c(NA,
4L), class = c("dfidx_mlogit", "dfidx", "data.frame", "mlogit.data"
), idx = structure(list(chid = c(1L, 1L, 1L, 1L), unique_id = c(3000175513,
3000175513, 3000175513, 3000175513), alt = structure(1:4, .Label = c("Bicycle",
"Car", "Metro", "Walking"), class = "factor")), ids = c(1, 1,
2), row.names = c(NA, 4L), class = c("idx", "data.frame")))
Ответ №1:
Попробуйте это.
> row.names(data$idx) <- c()
> row.names(data) <- c()
>
> data_new <- rbind(data, data)
> data_new
EDUC HEALTH idx.chid idx.unique_id idx.alt
1 4 3 1 3000175513 Bicycle
2 4 3 1 3000175513 Car
3 4 3 1 3000175513 Metro
4 4 3 1 3000175513 Walking
5 4 3 1 3000175513 Bicycle
6 4 3 1 3000175513 Car
7 4 3 1 3000175513 Metro
8 4 3 1 3000175513 Walking
Ответ №2:
Вы можете сгенерировать правильное data.frame
использование do.call
.
res <- do.call(data.frame, data)
str(res)
# 'data.frame': 4 obs. of 5 variables:
# $ EDUC : int 4 4 4 4
# $ HEALTH : int 3 3 3 3
# $ idx.chid : int 1 1 1 1
# $ idx.unique_id: num 3e 09 3e 09 3e 09 3e 09
# $ idx.alt : Factor w/ 4 levels "Bicycle","Car",..: 1 2 3 4