转置后的data.frame和data.frame仍将变量设为非数字

时间:2018-08-20 16:56:51

标签: dataframe header numeric transpose vegan

我发现自己正在努力通过“素食主义者”和“ ggplot2”进行进一步的nMDS和Bioenv分析的数据导入。我有一个看起来像这样的数据框“ Taxa”(那里的值表示它是“数字”。—

  

头(税)

    X1      Station1   Stations1_2     Stations1_3  ...

  Species1    123           456              789

  Species2    123           456              789

   Species3    123           456              789
     

...

在我对数据进行转置以使测站(观测)成为行

  

Taxa <-t(Taxa)

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

...

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

  

class(Taxa)   [1]“矩阵”

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

  

Taxa.df <-data.frame(Taxa)

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

  

head(Taxa.df)

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

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

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

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

如果无法执行此操作,则无法运行所需的转换,并且仍然需要运行所有统计信息分析。我整天只是尝试在Mac上的Rstudio上从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?

1 个答案:

答案 0 :(得分:0)

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

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

但是,我认为您尚未发布 R 命令的实际输出,而是手工编写了认为对结构至关重要的内容。因此,您的数据可能与显示的数据不同,并且还可能包含非数字行。只需检查sum(Taxa)(如果您的数据为数字,则为数字),sum(Taxa[,-1])(如果删除第一列即可,则为数字),而summary(Taxa)(给出Mean和{{ 1}}表示全数字的列(包括第一行)。