R: работа с неуникальными именами строк при назначении элементов столбцов именам строк в существующем фрейме данных - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь переназначить 1-й столбец моего набора данных на имена / заголовки строк и оставить остальную часть кадра данных для обработки в качестве переменных. Я видел переназначение кодов:

samp2 <- samp[,-1]
rownames(samp2) <- samp[,1]

Проблема. однако, элементы в моем первом столбце являются именами, поэтому они имеют дубликаты, поскольку один и тот же человек может быть измерен несколько раз.

> samp 
      names Var.1 Var.2 Var.3
 1     A     1     5     0
 2     B     2     4     1
 3     C     3     3     2
 4     A     4     2     3
 5     B     5     1     4
 ...

Это дает мне ошибку "неуникальных имен". Я не хочу объединять / объединять строки. Как я достиг своей цели, чтобы превратить мой фрейм данных в:

> samp.with.rownames 
     Var.1 Var.2 Var.3
A     1     5     0
B     2     4     1
C     3     3     2
A     4     2     3
B     5     1     4
...

1 Ответ

1 голос
/ 11 февраля 2020

Как уже упоминалось в комментариях, вы не можете иметь повторяющиеся имена строк в кадре данных, но если вам это нужно, вы можете иметь их в матрице.

mat <- matrix(unlist(samp[-1]), ncol = ncol(samp) - 1,
              dimnames = list(samp$names, names(samp[-1])))
mat

#  Var.1 Var.2 Var.3
#A     1     5     0
#B     2     4     1
#C     3     3     2
#A     4     2     3
#B     5     1     4

Здесь мы используем -1 для удаления первого столбца из кадра данных.

data

samp <- structure(list(names = c("A", "B", "C", "A", "B"), Var.1 = 1:5, 
Var.2 = 5:1, Var.3 = 0:4), row.names = c(NA, -5L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...