【问题标题】:How to name a column in a dataframe when it does not has name? [duplicate]当数据框中没有名称时如何命名数据框中的列? [复制]
【发布时间】:2016-08-25 12:16:07
【问题描述】:

我有一个符合两列的数据框,第一列(列 = 0)和第二列(列 = 1)。我试图命名零列,但我遇到了一些困难。当我应用 str() 函数时,它的输出只给了我一个变量(第 1 列)而不是两个(第 0 列和第 1 列)。

对于更多理解,第 1 列是“变量”,第 0 列必须是“标识”,但我无法执行它。

下面是dataexample 和我正在使用但没有正面结果的脚本(见下文):

      Variable
A.1     1178
A.2     1187
A.3     1190
B.1      983
B.2     1002
B.3      977
C.1     1056
C.2     1027
C.3     1043
D.1      974
D.2     1003
D.3      986

names(dataexample)[0]<-paste("Identification")
names(dataexample)[1]<-paste("Variable")

有关详细信息,两个脚本都有效运行,但只有第二个脚本将名称分配给列。此外,此表源自函数sum (),使用“标识”作为拆分标准。

【问题讨论】:

  • R 中,索引从 1 开始。数据集中只有一列。即Variable,另一个是row.names
  • 顺便说一句,那些看起来像是从某种类型的扩展函数中出现的行名
  • 我会分两步完成:df$Ident &lt;- row.names(df); row.names(df) &lt;- NULL
  • 抱歉,我缺乏知识,我不知道 R 索引以 1 开头。问候。

标签: r dataframe columnname


【解决方案1】:
tibble::rownames_to_column(dataexample, "Identification")

【讨论】:

    【解决方案2】:

    R 中,索引从1 开始。我们所说的列就是row.names。如果我们想要 2 列,我们可以使用 base R 从行名中创建一个新列 'Identification'。

    df1<-  `row.names<-`(transform(dataexample, Identification = row.names(df1))[2:1], NULL)
    

    当然,它可以分两步完成,就像 OP 帖子下的 cmets 中显示的那样。但是,我贴了一个单行,以防它有用。


    如果我们使用包,data.table 的一个选项是将keep.rownames 的默认设置从FALSE 更改为TRUE

    library(data.table)
    setnames(setDT(dataexample, keep.rownames = TRUE), 1, "Identification")
    

    【讨论】:

    • 不知道为什么您向明显缺乏经验的 R 用户推荐如此复杂的基本 R 解决方案 - 仅仅因为它是“单行”而不是两个?
    • 不,一点也不。既然它有效,它应该被认为是解决问题的有效方法。但是,我怀疑当有一个更简单的解决方案(在我看来)涉及 2 行代码但更易于阅读和理解时,它对 OP 是否特别有帮助。因此,我不会赞成您的回答
    • 效果很好。非常感谢你。问候。马蒂亚斯。
    猜你喜欢
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2018-01-04
    • 2015-07-17
    • 2019-01-10
    • 1970-01-01
    • 2021-11-15
    • 2018-12-21
    相关资源
    最近更新 更多