Вопрос по r – Укрепление расплавленного фрейма данных?

6

Предполагая, что я растаялdata.frame это выглядит так:

  variable       value
1         A -0.19933093
2         A -1.19043346
3         A -1.32248172
4         A -1.98644507
5         A -0.07930953
6         B -0.10074686
7         B  0.72451483
8         B -0.40914044
9         B  0.02913376
10        B  0.16062491

Как мне получить это:

  A       B
-0.19933093 -0.10074686
-1.19043346  0.72451483
-1.32248172 -0.40914044
-1.98644507  0.02913376
-0.07930953  0.16062491

Кажется тривиальным, но я не могу ответить.dcast а такжеacast не похоже на это. Моя цель - сделать это на больших наборах данных и превратить конечный продукт вmatrix с именами столбцов, которые будут именами переменных. Я пытался играть сdaply а такжеlaply (до таяния) без особой удачи.

Ваш Ответ

3   ответа
2

acast() вернуть матрицу. Нужна переменная id.

library(reshape2)
dat <- read.table(text = "variable       value
1         A -0.19933093
2         A -1.19043346
3         A -1.32248172
4         A -1.98644507
5         A -0.07930953
6         B -0.10074686
7         B  0.72451483
8         B -0.40914044
9         B  0.02913376
10        B  0.16062491",sep = "",header = TRUE)

dat$id = rep(1:5, 2)
dat

acast(dat, id~variable)
Идентификатор еще легче добавить перед плавлением, если это возможно. (Похоже, что в ситуации с OP, как это упоминалось выше.)
8

unstack:

dat <- read.table(text = "variable       value
1         A -0.19933093
2         A -1.19043346
3         A -1.32248172
4         A -1.98644507
5         A -0.07930953
6         B -0.10074686
7         B  0.72451483
8         B -0.40914044
9         B  0.02913376
10        B  0.16062491",sep = "",header = TRUE)

> unstack(dat,value~variable)

            A           B
1 -0.19933093 -0.10074686
2 -1.19043346  0.72451483
3 -1.32248172 -0.40914044
4 -1.98644507  0.02913376
5 -0.07930953  0.16062491

Но я должен добавить, что я хотел бы знать, как это сделать, используяdcastкак я также неоднократно пытался и не смог.

Я не думаю, что это возможно сdcast без добавления другого столбца в качествеvariable один столбец не уникально идентифицирует каждую точку данных. Проще говоря, он не знает, в какую строку помещать значения.
3

начните с фрейма данных в широкой форме, содержащей идентификатор.melt() это дать длинную форму, тоdcast() это, чтобы вернуться к исходному кадру данных.

library(reshape2)
df = read.table(text = "id   A   B
1  1 -0.19933093 -0.10074686
2  2 -1.19043346  0.72451483
3  3 -1.32248172 -0.40914044
4  4 -1.98644507  0.02913376
5  5 -0.07930953  0.16062491", sep = "", header = TRUE)

df

df.melt = melt(df, "id")
df.melt

df.original = dcast(df.melt, id~variable)

df.original

Похожие вопросы