изменение значений переменных в новые переменные в г - PullRequest
1 голос
/ 11 июля 2011

У меня есть набор данных с примерно 600 животными с этой структурой:

anim <- c(1,1,1,1,1,2,2,2,2)
point <- c(1,2,3,4,6,3,4,5,6)
temp <- c(38.8,38.5,33.2,33.5,37.2,36.2,36.5,36.0,37.8)
mydf <- data.frame(anim,point,temp)

anim point temp
1     1    38.8
1     2    38.5
1     3    33.2
1     4    33.5
1     6    37.2
2     3    36.2
2     4    36.5
2     5    36.0
2     6    37.8

Переменная «точка» содержит различные точки измерения (температуру) на животном, и мне нужно иметь эти точки измерения (1, 2,3,4,5,6) как новые переменные, такие как 1 = бел, 2 = бер, 3 = ле, 4 = ре, 5 = эй, 6 = кр.Обратите внимание, что некоторые точки могут не отображаться и не измеряться, и поэтому следует ввести NA.

mynewdf должен выглядеть следующим образом:

anim  bel   ber   le    re    ey    cr
1     38.8  38.5  33.2  33.5  NA    37.2
2     NA    NA    36.2  36.5  36.0  37.8

Я надеюсь, что мой вопрос достаточно ясен и поможетбудет очень признателен.

РЕДАКТИРОВАНИЕ:

Это выдержка из моего фактического набора данных:

head (irpig, n = 25)

головка (irpig, n = 25) плотина anim point temp 1 1A0331 20584 1 37,9 2 1A0331 20584 2 37,7 3 1A0331 20584 3 34,3 4 1A0331 20584 4 35,8 5 1A0331 20584 6 37,6 6 1A0331 20585 2 38,7 7 1A0331 2058 5581 205856 38,0 9 1A0331 20586 1 39,0 10 1A0331 20586 2 39,8 11 1A0331 20586 3 37,9 12 1A0331 20586 4 38,0 13 1A0331 20586 6 38,5 14 1A0331 20587 1 39,3 15 1A0331 20587 2 38,9 16 1A0331 2058 1 203 1 208 2 707 178 207 2 207 171 207 2 171 203 1 205 032 1 20,02 203 1 205 032 1 205 1 203 1 202 1 203 1 205 5 5 5 5 5 5 5 6,06 39,4 19 1A0331 20588 1 39,6 20 1A0331 20588 2 39,2 21 1A0331 20588 3 38,9 22 1A0331 20588 4 38,0 23 1A0331 20588 6 39,6 24 1A0331 20589 1 38,1 25 1A0331 20589 2 38,7

1018 * B

1 Ответ

3 голосов
/ 11 июля 2011

Вот одно из решений. Он использует функцию dcast из библиотеки reshape2 Хэдли Уикхема

mydf$point = as.factor(mydf$point)
levels(mydf$point)  = c("bel", "ber", "le", "re",  "ey", "cr")

library(reshape2)
dcast(mydf, anim ~ point)

  anim  bel  ber   le   re ey   cr
1    1 38.8 38.5 33.2 33.5 NA 37.2
2    2   NA   NA 36.2 36.5 36 37.8
...