Первые два столбца определены как «имена строк» - PullRequest
1 голос
/ 04 февраля 2020

Я хочу определить первые два столбца фрейма данных как имена строк. На самом деле, я хочу сделать некоторые расчеты, и фрейм данных должен быть для этого цифрой c.

data.frame <- data_frame(id=c("A1","B2"),name=c("julia","daniel"),BMI=c("20","49"))

Значения для ИМТ являются числовыми (подтверждено is.numeri c), но более все data.frame нет. Как определить первые два столбца (идентификатор и имя) как имена строк? Заранее благодарю за любые предложения

Ответы [ 2 ]

2 голосов
/ 04 февраля 2020

Вы можете объединить столбцы id и name, а затем назначить имена строк

data.frame %>%
  tidyr::unite(rowname, id, name) %>%
  tibble::column_to_rownames()

#          BMI
#A1_julia   20
#B2_daniel  49

В базе R вы можете сделать то же самое в шагах, как

data.frame <- as.data.frame(data.frame)
rownames(data.frame) <- paste(data.frame$id, data.frame$name, sep = "_")
data.frame[c('id', 'name')] <- NULL
0 голосов
/ 04 февраля 2020

Не уверен, что код и результат ниже - это то, что вам нужно:

dfout <- `rownames<-`(data.frame(BMI = as.numeric(df$BMI)),paste(df$id,df$name))

такое, что

> dfout
          BMI
A1 julia   20
B2 daniel  49

ДАННЫЕ

df <- structure(list(id = structure(1:2, .Label = c("A1", "B2"), class = "factor"), 
    name = structure(2:1, .Label = c("daniel", "julia"), class = "factor"), 
    BMI = structure(1:2, .Label = c("20", "49"), class = "factor")), class = "data.frame", row.names = c(NA, 
-2L))
...