前两列定义为 "rownames"

The first two columns defined as "rownames"

我想将数据框的前两列定义为行名。其实我想做一些计算,数据框必须是数字。

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

BMI 值是数值(用 is.numeric 证明),但总的来说 data.frame 不是。如何将前两列(id 和 name)定义为行名? 预先感谢您的任何建议

不确定下面的代码和结果是否是您想要的:

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))

您可以合并 idname 列,然后分配行名

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

#          BMI
#A1_julia   20
#B2_daniel  49

在 base 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