Получить строку из таблицы dimname в R - PullRequest
1 голос
/ 14 июля 2020

У меня есть следующая таблица:

> some.table
          Week
Person     17 18 19 20 21 22 23 24 25 26 27 28 29 30
  Anna      0  1  0  1  1  1  0  0  2  1  1  0  0  2
  Cloe      0  1  1  1  1  1  0  0  0  0  0  1  2  0
  Heather   1  0  0  2  1  1  0  1  1  1  2  1  2  0
  Samantha  0  0  3  1  1  2  1  0  0  0  0  0  0  0
> str(some.table)
 'table' int [1:6, 1:14] 0 0 1 0 0 1 1 1 0 0 ...
 - attr(*, "dimnames")=List of 2
  ..$ Person: chr [1:6] "Anna" "Cloe" "Heather" "Samantha"
  ..$ Week  : chr [1:14] "17" "18" "19" "20" ...

Как мне извлечь строку из этой таблицы по имени человека?

Например, для чего-то вроде some.table$Person["Cloe"] Хочу получить вектор c(0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 2, 0).

Ответы [ 3 ]

2 голосов
/ 14 июля 2020

Это объект table, поэтому либо конвертируйте в data.frame, либо выполняйте извлечение. «Человек», «Неделя» - это атрибут names элемента dimnames

subset(as.data.frame(some.table), Person == "Cloe")$Freq
.

Используя воспроизводимый пример с mtcars

data(mtcars)
some.table <- table(mtcars$cyl, mtcars$vs)
names(dimnames(some.table)) <- list("mpg", "vs")
subset(as.data.frame(some.table), mpg == 4)$Freq
#[1]  1 10
2 голосов
/ 14 июля 2020

Попробовать some.table["Cloe", ]

2 голосов
/ 14 июля 2020

Это должно работать, обратите внимание на запятую:

some.table["Cloe", ]

Вот воспроизводимый пример:

x <- with(mtcars, table(cyl, gear))
x
#    gear
# cyl  3  4  5
#   4  1  8  2
#   6  2  4  1
#   8 12  0  2

x[ "4", ]
# 3 4 5 
# 1 8 2 

Мы можем отбросить имена столбцов, используя unname :

unname(x[ "4", ])
# [1] 1 8 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...