melt () использует все имена столбцов в качестве переменных id - PullRequest
0 голосов
/ 13 сентября 2018

Итак, с этим набором фиктивных данных

test_species <- c("a", "b", "c", "d", "e")
test_abundance <- c(4, 7, 15, 2, 9)
df <- rbind(test_species, test_abundance)
df <- as.data.frame(df)
colnames(df) <- c("a", "b", "c", "d", "e")
df <- dplyr::slice(df, 2)

мы получаем фрейм данных, примерно такой:

a     b     c     d     e    
4     7     15    2     9 

Я бы хотел превратить его во что-то вроде

species      abundance
a            4
b            7
c            15
d            2
e            9

с помощью функции reshape2 melt (). Я попробовал код

melted_df <- melt(df,
              variable.name = "species", 
              value.name = "abundance")

но это говорит мне: «Использование a, b, c, d, e в качестве переменных id», и конечный результат выглядит так:

a     b     c     d     e    
4     7     15    2     9 

Что я делаю не так и как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

Rbind добавляет странное поведение, я думаю, я не могу объяснить, почему.

Довольно простое исправление:

test_species <-c("a", "b", "c", "d", "e")
test_abundance <- c(4, 7, 15, 2, 9)
df <- data.frame(test_species, test_abundance) #skip rbind and go straight to df
colnames(df) <- c('species', 'abundance') #colnames correct

Это пропускает функцию rbind и дает желаемый результат.

0 голосов
/ 13 сентября 2018

Вы можете определить его в правильной форме с самого начала, используя только основные функции библиотеки:

> data.frame(species=test_species, abundance=test_abundance)
  species abundance
1       a         4
2       b         7
3       c        15
4       d         2
5       e         9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...