我想把数据框的前两列定义为行名。实际上我想做一些计算,数据框必须是数字的。
data.frame <- data_frame(id=c("A1","B2"),name=c("julia","daniel"),BMI=c("20","49"))
BMI的值是数字的(用is.numeric证明),但是overalldata.frame不是。如何将前两列(id和name)定义为行名?提前感谢您的建议
j7dteeu81#
可以合并id和name列,然后分配行名称
id
name
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
thtygnil2#
不确定下面的代码和结果是否是你想要的:
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))
2条答案
按热度按时间j7dteeu81#
可以合并
id
和name
列,然后分配行名称在base R中,您可以按照以下步骤执行相同的操作
thtygnil2#
不确定下面的代码和结果是否是你想要的:
使得
数据