Вот несколько альтернатив.Они не используют никаких пакетов.
Предположим, что ввод DF
воспроизводимо показан в примечании в конце.
1) xtabs Первая строка кода преобразует первый столбец в символ, если он является фактором.Нам это не нужно с данными, показанными в примечании, но это не повредит и могло бы быть полезным, если бы столбец был фактором, чтобы он находился в известном состоянии.
Затем преобразуйте столбец V1 в факториметь уровни в том порядке, в котором они появляются, чтобы они не переставлялись при выводе.Также определите более подходящие имена и создайте вектор номера группы, который нумерует первую группу из 5 строк как 1, вторую группу 2 и так далее.
Наконец, используйте xtabs
для создания нужной таблицы.Если вы предпочитаете фрейм данных в качестве вывода, а не таблицу, тогда используйте as.data.frame(xt)
.
DF2 <- transform(DF, V1 = as.character(V1))
DF2 <- transform(DF2, Stat = factor(V1, levels = V1[1:5]),
Value = V2,
Group = cumsum(V1== "startTime"))
xt <- xtabs(Value ~ Group + Stat, DF2)
xt
, давая:
Stat
Group startTime max min EndTime avg
1 1 3 1 2 2
2 2 4 1 3 2
2) матрица Еще корочеэто один вкладыш.Это дает матрицу.Используйте as.data.frame(m)
, если вам нужен фрейм данных.
m <- matrix(DF$V2,, 5, byrow = TRUE, list(NULL, DF$V1[1:5]))
m
, давая:
startTime max min EndTime avg
[1,] 1 3 1 2 2
[2,] 2 4 1 3 2
Примечание
Ввод в воспроизводимой форме.Я добавил несколько строк.
Lines <- "
startTime 1
max 3
min 1
EndTime 2
avg 2
startTime 2
max 4
min 1
EndTime 3
avg 2"
DF <- read.table(text = Lines, as.is = TRUE)