【问题标题】:What is about the first column in R's dataset mtcars?R 的数据集 mtcars 中的第一列是什么?
【发布时间】:2016-12-23 17:57:21
【问题描述】:

我认为我缺少关于 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] 访问它们。并且没有列名/标题。

我怎样才能创建这样的数据框?我怎么能使用那个特殊的专栏,例如例如在图中描述数据?

【问题讨论】:

  • 它们是行名。 rownames(mtcars)

标签: r dataframe rowname


【解决方案1】:

它们是行名,要访问它们,请使用:

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

注意: 行名不是很可靠,例如参见this post。 (这可能是主观意见,我通过将行名重新分配给列来避免它们)

data.table 和 dplyr 包宁愿不要拥有它们。您始终可以将行名重新分配到列中:

mydata$myNames <- rownames(mydata)

【讨论】:

  • 行名?!这超出了我的 Excel 世界!伟大的! ;)
  • btw:一些导出库(用于 csv 或 xlsx 文件)使用行名作为第一列。我可以删除行名吗?
  • 要删除行名,您只需执行rownames(mtcars) &lt;- NULL。此外,当您执行mtcars$mpg 时,您将提取mpg 变量作为向量。
  • 因为通过上面的操作,我们正在删除 data.frame 属性并将其转换为向量,请尝试使用mtcars["mpg"]
  • 尽管这个简单的论点会做得很好。 df &lt;- cbind(new_col_name =rownames(mtcars), data.frame(mtcars, row.names= NULL)). 分配new_col_name 将替换默认的rn 列名
【解决方案2】:

带有data.tablePackage 的较短的单行参数将使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

【讨论】:

    【解决方案3】:

    这也适用于 tibble

    library(tibble)
    mtcars %>%
      rownames_to_column(var="carnames")
    

    【讨论】:

      猜你喜欢
      • 2013-09-08
      • 2013-11-03
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多