У меня есть dataframe глядя, как это:, как превратить этот dataframe в длинном формате
a <- c("Lilo","Chops","Henmans")
a <- cbind(a,c(0.1,0.5,0.25),c(0.2,0.3,0.65),c(0.7,0.2,0.1))
colnames(a) <- c("market","Product A","Product B","Product C")
и хотели бы, чтобы расплавить его:
b <- melt(a, varnames = c("market"))
это дает следующее:
> b
market NA value
1 1 market Lilo
2 2 market Chops
3 3 market Henmans
4 1 Product A 0.1
5 2 Product A 0.5
6 3 Product A 0.25
7 1 Product B 0.2
8 2 Product B 0.3
9 3 Product B 0.65
10 1 Product C 0.7
11 2 Product C 0.2
12 3 Product C 0.1
>
Тем не менее, хочу, чтобы я искал
> b
market NA value
4 Lilo Product A 0.1
5 Chops Product A 0.5
6 Henmans Product A 0.25
7 Lilo Product B 0.2
8 Chops Product B 0.3
9 Henmans Product B 0.65
10 Lilo Product C 0.7
11 Chops Product C 0.2
12 Henmans Product C 0.1
Как достичь этого, используя расплав?
значения в не числовой. Причина в том, что в R матрица может сохранять только значения одного типа: так что в вашем случае смешение числового и символьного (столбчатый рынок) делает матричный числовой. Возможно, вы захотите использовать 'data.table' вместо этого. Читайте в своих данных следующим образом: 'DF <- data.frame (c (« Lilo »,« Chops »,« Henmans »), c (0,1,0,5,0,25), c (0,2,0,3,0,65), c (0.7,0.2,0.1)); colnames (DF) <- c («рынок», «продукт A», «продукт B», «продукт C») ' Затем используйте' melt (DF) ' – Rentrop
Это связано http://stackoverflow.com/вопросы/22264737/с использованием расплава-с-матрицей или-данные кадров дают разные-выходы –