Мой первый вопрос: почему count$Var1
"целое число"?
Поскольку факторы имеют целочисленный тип хранения
> is.factor(count$Var1)
[1] TRUE
а «струны» в радужной оболочке data.frame
, как это обычно бывает в R, сохраняются как множители.
И почему они стали "списком" после t()
?
Когда вы транспонируете, вы получаете матрицу, а матрицы должны иметь один и тот же класс хранения для каждой записи. То, что вы на самом деле получите первым, — это матрица символов, так как целые значения будут принудительно заданы. Затем, когда вы впоследствии перейдете на data.frame
, эти символы по умолчанию будут заменены (новыми) множителями.
> t(count)
[,1] [,2] [,3]
Var1 "setosa" "versicolor" "virginica"
Freq "50" "50" "50"
> transposed_count <- as.data.frame(t(count))
> transposed_count[2,1]
Freq
50
Levels: 50 setosa
> as.numeric(transposed_count[2,1])
[1] 1
Итак, то, что было числом 50, теперь является фактором с числовым значением 1! Не то, что вы хотите.
Почему typeof(transposed_count[1,])
— это список? Горизонтальный срез data.frame на самом деле является data.frame.
> is.data.frame(transposed_count[2,])
[1] TRUE
А data.frames — это просто списки с информацией о классе.
Но как тогда я могу получить «транспонированный» фрейм данных?
Похоже, вы хотите
> library(reshape2)
> dcast(melt(count), variable~Var1)
Using Var1 as id variables
variable setosa versicolor virginica
1 Freq 50 50 50
после того, как я прочитаю все образцы, я собираюсь связать все кадры данных
Вы должны убедиться, что столбцы выровнены надлежащим образом. В зависимости от предстоящего анализа может быть более естественным использовать rbind
, как и другой столбец, указывающий источник.
> count2 <- count
> count$source = "file1"
> count2$source = "file2"
> (mcount <- rbind(count,count2))
Var1 Freq source
1 setosa 50 file1
2 versicolor 50 file1
3 virginica 50 file1
4 setosa 50 file2
5 versicolor 50 file2
6 virginica 50 file2
Теперь вам не нужно беспокоиться о выравнивании, если вы хотите изменить форму позже
> dcast(melt(mcount), ...~Var1)
Using Var1, source as id variables
source variable setosa versicolor virginica
1 file1 Freq 50 50 50
2 file2 Freq 50 50 50
person
A. Webb
schedule
15.02.2017