растопить несколько id.vars, так как все столбцы исключены из списка - PullRequest
0 голосов
/ 03 июня 2018
df1<-data.frame(id=c("a","b","c","d"),
                var1=c(2,4,4,5),
                var2=c(5,6,2,6),
                var3=c(5,3,2,1))

msr<-c("var1", "var2","var3")

melt(df1,
 id.vars = -c(msr), #problem here
 measure.vars = c(msr))

У меня есть схожий с ним фрейм данных, за исключением большого числа id.vars.Я хотел бы включить их все, и самым простым способом было бы просто исключить столбцы, используемые в качестве measure.vars.Однако я, похоже, не могу этого сделать.

Я также пытался:

ids<-df1[,-c(msr)] #why can't I exclude?
melt(df1,
     id.vars = c(ids), #problem here
     measure.vars = c(msr))

Есть предложения?

1 Ответ

0 голосов
/ 03 июня 2018

Вам не нужно указывать аргумент id.vars для функции reshape2::melt, если вы знаете список столбцов для measure.vars.Функция melt очень гибкая в этом смысле:

Значение, если id.vars равно blank, тогда все переменные non-measured будут использоваться как id.vars.Аналогично, если указано id.vars и measure.vars равно blank, все non id.vars будут использоваться как measure.vars.

Следовательно, необходимо изменить, чтобы исправить использование OP melt.is:

library(reshape2)

msr<-c("var1", "var2","var3")

melt(df1, measure.vars = msr)  # id.vars will be all non-measured variables

#    id variable value
# 1   a     var1     2
# 2   b     var1     4
# 3   c     var1     4
# 4   d     var1     5
# 5   a     var2     5
# 6   b     var2     6
# 7   c     var2     2
# 8   d     var2     6
# 9   a     var3     5
# 10  b     var3     3
# 11  c     var3     2
# 12  d     var3     1

Данные:

df1<-data.frame(id=c("a","b","c","d"),
                var1=c(2,4,4,5),
                var2=c(5,6,2,6),
                var3=c(5,3,2,1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...