【问题标题】:How do I name the "row names" column in r如何在 r 中命名“行名”列
【发布时间】:2013-07-07 17:50:18
【问题描述】:

我正在使用 r 中的数据框,其中我的行名是有意义的。因此,我想为行名列命名。我该怎么做?

【问题讨论】:

  • 类似mydf$MeaningfulName <- rownames(mydf)?然后设置rownames(mydf) <- NULL 以根据需要删除原始行名.... 为什么需要这样做?
  • 你看过?rownames
  • @Dason:他想命名行名,而不是命名行...(不过你为什么要这样做)

标签: r


【解决方案1】:

听起来您想将行名转换为 data.frame 的适当列。例如:

# add the rownames as a proper column
myDF <- cbind(Row.Names = rownames(myDF), myDF)
myDF

#           Row.Names id val vr2
# row_one     row_one  A   1  23
# row_two     row_two  A   2  24
# row_three row_three  B   3  25
# row_four   row_four  C   4  26

如果你想删除原来的行名:

rownames(myDF) <- NULL
myDF
#   Row.Names id val vr2
# 1   row_one  A   1  23
# 2   row_two  A   2  24
# 3 row_three  B   3  25
# 4  row_four  C   4  26


或者,如果您的所有数据都属于同一类(即,全部为数字或全部为字符串),您可以转换为 Matrix 并将其命名为 dimnames

myMat <- as.matrix(myDF)
names(dimnames(myMat)) <- c("Names.of.Rows", "")
myMat

# Names.of.Rows id  val vr2 
#   row_one   "A" "1" "23"
#   row_two   "A" "2" "24"
#   row_three "B" "3" "25"
#   row_four  "C" "4" "26"

【讨论】:

    【解决方案2】:

    tibble 包现在有一个专用函数,可将行名转换为显式变量。

    library(tibble)
    rownames_to_column(mtcars, var="das_Auto") %>% head
    

    给予:

               das_Auto  mpg cyl disp  hp drat    wt  qsec vs am gear carb
    1         Mazda RX4 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
    2     Mazda RX4 Wag 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
    3        Datsun 710 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
    4    Hornet 4 Drive 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
    5 Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
    6           Valiant 18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
    

    【讨论】:

      猜你喜欢
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 2020-03-05
      • 1970-01-01
      • 2010-12-01
      • 2018-10-29
      • 1970-01-01
      相关资源
      最近更新 更多