R 的数据集 mtcars 中的第一列是什么?
What is about the first column in R's dataset mtcars?
我想我错过了关于 R 数据帧的基本概念。
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
这里是车名。这是专栏吗?我不这么认为,因为我无法通过 mtcars[,1]
访问它们。并且没有 name/header 列。
我怎样才能创建这样的数据框?我怎么能使用那个特殊的专栏,例如例如在图中描述数据?
它们是行名称,要访问它们,请使用:
rownames(mtcars)
对于列名使用colnames,要同时查看行名和列名,我们可以使用:
dimnames(mtcars)
要修改,比如第一行:
rownames(mtcars)[1] <- "myNewName"
当使用 data.frame 创建数据框时,行名称会分配 1:n 个数字。
mydata <- data.frame(x = 1:5)
然后我们可以修改它们:
rownames(mydata) <- paste0("MyName", 1:5)
或者我们可以在创建 data.frame 时添加行名:
mydata <- data.frame(x = 1:5, row.names = paste0("MyName", 1:5))
注:
rownames 不是很可靠,例如参见 [=17=]。 (这可能是主观意见,我通过将行名重新分配给列来避免它们)
data.table 和 dplyr 包 更喜欢 没有它们。您始终可以将行名重新分配到列中:
mydata$myNames <- rownames(mydata)
带有 data.table
Package 的较短的一个衬里参数将使 rowname
成为一列。
library(data.table)
setDT(mtcars, keep.rownames = TRUE[])
head(mtcars)
rn mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
这也适用于 tibble
。
library(tibble)
mtcars %>%
rownames_to_column(var="carnames")
- 您如何创建这样的数据框? =>
您可以使用 textshape 包将列名称转换为行名称。见下面的例子
> 列到行名称
library(textshape)
state_dat <- data.frame(state.name, state.area, state.center, state.division)
column_to_rownames(state_dat)
#making 'state.name' to row names in new data 'new_state_dat'
new_state_dat<-column_to_rownames(state_dat, 'state.name')
我建议你不要使用 row.names() 将列名转换为行名
How could I use that special column e.g. to describe the data in a
plot for example?
你可以使用superheat package,更多信息见https://rlbarter.github.io/superheat/index.html,如果你使用[=24=更简单也更强大]textshape package 而不是 row.names() 将列转换为行名
我想我错过了关于 R 数据帧的基本概念。
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
这里是车名。这是专栏吗?我不这么认为,因为我无法通过 mtcars[,1]
访问它们。并且没有 name/header 列。
我怎样才能创建这样的数据框?我怎么能使用那个特殊的专栏,例如例如在图中描述数据?
它们是行名称,要访问它们,请使用:
rownames(mtcars)
对于列名使用colnames,要同时查看行名和列名,我们可以使用:
dimnames(mtcars)
要修改,比如第一行:
rownames(mtcars)[1] <- "myNewName"
当使用 data.frame 创建数据框时,行名称会分配 1:n 个数字。
mydata <- data.frame(x = 1:5)
然后我们可以修改它们:
rownames(mydata) <- paste0("MyName", 1:5)
或者我们可以在创建 data.frame 时添加行名:
mydata <- data.frame(x = 1:5, row.names = paste0("MyName", 1:5))
注: rownames 不是很可靠,例如参见 [=17=]。 (这可能是主观意见,我通过将行名重新分配给列来避免它们)
data.table 和 dplyr 包 更喜欢 没有它们。您始终可以将行名重新分配到列中:
mydata$myNames <- rownames(mydata)
带有 data.table
Package 的较短的一个衬里参数将使 rowname
成为一列。
library(data.table)
setDT(mtcars, keep.rownames = TRUE[])
head(mtcars)
rn mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
这也适用于 tibble
。
library(tibble)
mtcars %>%
rownames_to_column(var="carnames")
- 您如何创建这样的数据框? => 您可以使用 textshape 包将列名称转换为行名称。见下面的例子
> 列到行名称
library(textshape)
state_dat <- data.frame(state.name, state.area, state.center, state.division)
column_to_rownames(state_dat)
#making 'state.name' to row names in new data 'new_state_dat'
new_state_dat<-column_to_rownames(state_dat, 'state.name')
我建议你不要使用 row.names() 将列名转换为行名
How could I use that special column e.g. to describe the data in a plot for example?
你可以使用superheat package,更多信息见https://rlbarter.github.io/superheat/index.html,如果你使用[=24=更简单也更强大]textshape package 而不是 row.names() 将列转换为行名