【问题标题】:Data.frame after transpose and data.frame still gives variables as non-numeric转置后的 Data.frame 和 data.frame 仍然将变量作为非数字
【发布时间】:2018-08-20 16:56:51
【问题描述】:

我发现自己正在为使用“vegan”和“ggplot2”进行进一步的 nMDS 和 Bioenv 分析而苦苦挣扎。我有一个看起来像这样的数据框“Taxa”(这些值意味着它是“数字”。-

头(类群)

    X1      Station1   Stations1_2     Stations1_3  ...

  Species1    123           456              789

  Species2    123           456              789

   Species3    123           456              789

...

在我转置我的数据以将站(观察)作为行之后

分类

       X_1        Species1     Species2     Species3  ...
     Station1      123           456              789
     Species1_2    123           456              789
     Species1_3    123           456              789

...

现在,如果我检查数据是如何转置的,我会发现它已被转换为“矩阵”

类(分类) [1] “矩阵”

现在我可以再次将矩阵更改为数据框

Taxa.df

然后我得到的是以下内容:

头(Taxa.df)

                       X1          X2             X3 
          X_1        Species1     Species2     Species3  ...
          Station1      123           456              789
          Species1_2    123           456              789
          Species1_3    123           456              789
          ...

现在我需要让第一行成为列标题,以便我可以恢复初始结构

colnames(Taxa.df)=Taxa.df[1,]

当我这样做时,数据框会发生这种情况

                         23          10             16    ....    
           X_1        Species1     Species2     Species3  ...
           Station1      123           456              789
           Species1_2    123           456              789
           Species1_3    123           456              789
           ...

我无法将第一行作为标题。

如果我不能做到这一点,我就无法运行我需要的转换以及我仍然需要运行的所有统计数据分析。我花了一整天的时间试图从 Rstudio for Mac 上的 xlsx 导入数据并解决这个问题。我希望你们能提供帮助。我确实已经环顾四周,并且大多认为这两个链接是有用的答案,但没有解决我的确切问题。

http://r.789695.n4.nabble.com/Transposing-Data-Frame-does-not-return-numeric-entries-td852889.html

Why does the transpose function change numeric to character in R?

【问题讨论】:

    标签: dataframe header numeric transpose vegan


    【解决方案1】:

    您的数据框中的第一个变量是 X1,其值为 Species1 等。您应该已经读取了您的数据,以便第一个变量是数字 (Species1),您可以使用参数 row.names=1read.* 命令。或者,您只能转置数字数据,然后用原始数据标记行和列。以下可能有效

    mat <- t(Taxa[,-1]) # remove col 1
    colnames(mat) <- rownames(Taxa)
    mat <- as.data.frame(mat)
    

    但是,我认为您没有发布 R 命令的实际输出,而是手写了您认为 对结构至关重要的内容。因此,您的数据可能与您显示的不同,并且您也可能有非数字行。如果您的数据是数字,只需检查 sum(Taxa) 这是数字,如果删除第一列就足够了,检查 sum(Taxa[,-1]) 这是一个数字,对于所有数字列,summary(Taxa) 给出 MeanMedian(包括第一行)。

    【讨论】:

    • 谢谢Jari,很有用!
    猜你喜欢
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2011-10-27
    • 2018-08-12
    • 2013-05-24
    相关资源
    最近更新 更多