Хотелось бы создать новый кадр данных в R, который принимает набор строк, и объединяет каждый вариант в nrow
* nrow
* ncol
.STEM: Создайте последовательные комбинации каждой строки в R
library(dplyr)
dat <- read.table(text =
" Animal Color Size
Cat Orange 10
Dog Black 20", header=TRUE)
Хотел этот вывод:
Animal Color Size
Cat NA NA
Cat Orange NA
Cat Orange 10
Dog NA NA
Dog Black NA
Dog Black 20
Есть функция в R, которые могут сделать это - что-то вроде expand.grid
?
expand.grid(dat$Animal, dat$Color, dat$Size) %>% arrange(Var1, Var2, Var3) #Note: this does not give the correct answer.
Я могу создать первый кусок из Дат это первая строка с помощью:
dat <- c("Cat", "Orange", 10)
counter <- 1
datInner <- list()
for(i in 1:length(dat)){ # loops through 3x
# i <- 3
datInner[[i]] <- dat[1:i]
counter <- counter + 1
}
library(plyr)
# Adapted from http://stackoverflow.com/questions/17308551/do-callrbind-list-for-uneven-number-of-column
plyr::rbind.fill(lapply(datInner, function(y){as.data.frame(t(y),
stringsAsFactors = FALSE)}))
# V1 V2 V3
# 1 Cat <NA> <NA>
# 2 Cat Orange <NA>
# 3 Cat Orange 10
ПРИМЕЧАНИЕ: Будет ли вызывать эту функцию введите Последовательная Tree Extended Matrix (STEM). Он берет таблицу с деревом, где глубина узлов изменяется, перечисляя только конечные узлы и преобразуя их в таблицу со всеми последовательными комбинациями дерева.
Откуда взялись 'NA'? 'expand.grid' не вставляет' NA '. – alistaire
NA - это просто заполнители – eyeOfTheStorm
Почему в колонке 'Animal' нет' NA '? – Gregor