前两列定义为 "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))
您可以合并 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
我想将数据框的前两列定义为行名。其实我想做一些计算,数据框必须是数字。
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))
您可以合并 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