Data.frame после транспонирования и data.frame по-прежнему дает переменные как нечисловые

Я обнаружил, что борюсь с импортом данных для дальнейшего анализа nMDS и Bioenv с помощью «vegan» и «ggplot2». У меня есть фрейм данных «Taxa», который выглядит так (значения означают, что он «числовой». —

голова (таксы)

    X1      Station1   Stations1_2     Stations1_3  ...

  Species1    123           456              789

  Species2    123           456              789

   Species3    123           456              789

...

После того, как я перенесу свои данные, чтобы станции (наблюдения) были в виде строк

Таксоны ‹- t (Таксоны)

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

...

Теперь, если я проверю, как данные были транспонированы, я увижу, что они были преобразованы в «матрицу».

класс (Таксы) [1] "матрица"

Теперь я могу снова изменить матрицу на фрейм данных

Taxa.df ‹- data.frame(Taxa)

И что я получаю тогда следующее:

голова (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
           ...

Мне не удается получить первую строку в качестве заголовка.

Если я не могу этого сделать, я не могу запустить нужное мне преобразование и весь анализ статистики, который мне все еще нужно выполнить. Я провел целый день, просто пытаясь импортировать данные из xlsx в Rstudio для Mac и решить эту проблему. Я надеюсь, что вы, ребята, можете помочь. Я уже много оглядывался и в основном думал, что нашел эти две ссылки как полезные ответы, но ничто не решило мою конкретную проблему.

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

Почему функция транспонирования меняет числовое значение на символ в Р?


person Francesca Pasotti    schedule 20.08.2018    source источник


Ответы (1)


Первая переменная в вашем фрейме данных была 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 и Median для столбцов, которые все числовые (включая первую строку).

person Jari Oksanen    schedule 21.08.2018
comment
Спасибо, Яри, очень полезно! - person Francesca Pasotti; 07.11.2018