Как преобразовать имена строк таблицы в вектор - PullRequest
9 голосов
/ 18 октября 2011

Я вернул статистику по моим данным, используя команду таблицы следующим образом:

subject<-c(4,4,2,2,3,3)
correct<-c(0,1,1,1,0,0)
test<-data.frame(subject,correct)
freq_test<-head(table(test$subject,test$correct))

Возвращает таблицу, которая выглядит следующим образом

    0 1

  2 0 2

  3 2 0

  4 1 1

Это замечательно, но проблема в том, что я хотел бы, чтобы первый столбец был вектором, а не row.names (чтобы я мог правильно его кодировать как «субъект»). Есть ли способ заставить этот столбец действовать таким образом?

Ответы [ 3 ]

11 голосов
/ 18 октября 2011

Просто создайте новый фрейм данных с именами строк freq_test в качестве первого столбца:

> df<-data.frame(as.numeric(rownames(freq_test)),freq_test)
> colnames(df)[1]="subject"
> df
  subject X0 X1
2       2  0  2
3       3  2  0
4       4  1  1
>

Конечно, вы можете переименовать X0 и X1 во что угодно, отредактировав colnames(df), как указано выше.

1 голос
/ 18 октября 2011

Если вам нужны данные в «длинном» формате (полезно для некоторых моделей и построения графиков, особенно если ваши таблицы более сложные), метод таблицы для универсальной функции as.data.frame позаботится об этом за вас:

> as.data.frame(table(test))
  subject correct Freq
1       2       0    0
2       3       0    2
3       4       0    1
4       2       1    2
5       3       1    0
6       4       1    1
0 голосов
/ 18 октября 2011

Я думаю, вы должны были использовать стандартный метод построения data.frame, который с парами имя = значения:

test <- data.frame( subject=subject, correct=correct)

Первое subject будет интерпретироваться как имя, которое будетв кавычках, а вторая subject будет интерпретирована .... т. е. в окружающих средах будет выполняться поиск объекта с именем subject, а его значение будет присвоено столбцу "subject" в "test"».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...