Как использовать вектор строк в measure.vars в melt в R? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть файл data.csv:

BBBB,  B, OOB 

CCCC,  C, OOC

DDDD,  D, OOD

EEEE,  E, OOE

Я получил 2-й столбец как:

df1 <- read.csv(data, header=FALSE,strip.white=TRUE,stringsAsFactors=FALSE)[2].

Вопрос в том, как использовать df1 как c («B», «C», «D», «E)» в функции melt, чтобы использовать df1 в качестве measure.vars для другого набора данных (например, data2, заголовки которого имеют B, C , D, E).

B,C,D,E

9.43,9.49,9.61,9.04


7.01,3.43,3.63,3.55

10.35,9.05,9.49,8.45

4.83,1.89,1.79,1.94

10.3,10.39,9.67,8.95

Я хотел использовать как:

df2 = data.frame(melt(data2, measure.vars=df1, variable.name=xxxx, value.name="yyyy"), m="zzzz")

1 Ответ

0 голосов
/ 30 апреля 2020

Если мы используем [ без каких-либо ,, то это все равно будет data.frame с одним столбцом (при условии, что исходный набор данных равен data.frame. Лучший вариант - [[ для извлечения в качестве вектора и аргумент measure ожидает vector. Также лучше обернуть с unique (в случае, если есть дубликаты)

v1 <- unique(read.csv('file.csv', header=FALSE,strip.white=TRUE,stringsAsFactors=FALSE)[[2]])

Теперь мы используем это в measure

library(reshape2)
df2 <- data.frame(melt(data2, measure.vars=v1, variable.name='xxxx', 
         value.name="yyyy"), m="zzzz")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...