Изменение кадра данных в R [дубликат]

Как только у Вас есть исключение эти две вещи, которыми Вы интересуетесь, Система. Диагностика. StackTrace и Система. Диагностика. StackFrame

Там является примером MSDN здесь

16
задан Vince 7 October 2009 в 20:33
поделиться

3 ответа

Мне тоже всегда сложно изменить форму, но, похоже, это всегда срабатывает после небольших проб и ошибок. Вот что я в итоге обнаружил:

> x
  unique_id seq response detailed.name treatment
1         a  N1   123.23           dN1        T1
2         a  N2   231.12           dN2        T1
3         a  N3   231.23           dN3        T1
4         b  N1   343.23           dN1        T2
5         b  N2   281.13           dN2        T2
6         b  N3   901.23           dN3        T2

> x2 <- melt(x, c("seq", "detailed.name", "treatment"), "response")
> x2
  seq detailed.name treatment variable  value
1  N1           dN1        T1 response 123.23
2  N2           dN2        T1 response 231.12
3  N3           dN3        T1 response 231.23
4  N1           dN1        T2 response 343.23
5  N2           dN2        T2 response 281.13
6  N3           dN3        T2 response 901.23

> cast(x2, seq + detailed.name ~ treatment)
  seq detailed.name     T1     T2
1  N1           dN1 123.23 343.23
2  N2           dN2 231.12 281.13
3  N3           dN3 231.23 901.23

Ваши исходные данные уже были в длинном формате, но не в длинном формате, который используется при расплавлении / литье. Я переплавил его. Второй аргумент (id.vars) - это список вещей, которые нельзя таять. Третий аргумент (measure.vars) - это список вещей, которые меняются.

Затем при приведении используется формула. Слева от тильды находятся объекты, которые остаются такими, какие они есть, а справа от тильды - столбцы, которые используются для кондиционирования столбца значений.

Более или менее ...!

20
ответ дан 30 November 2019 в 17:27
поделиться

Основываясь на ответе Харлана - этапа переплавки можно избежать, если данные уже представлены в длинном формате, а значения столбца указаны в вызове cast .

> x <- read.table(textConnection("  unique_id seq response detailed.name treatment
+ 1         a  N1   123.23           dN1        T1
+ 2         a  N2   231.12           dN2        T1
+ 3         a  N3   231.23           dN3        T1
+ 4         b  N1   343.23           dN1        T2
+ 5         b  N2   281.13           dN2        T2
+ 6         b  N3   901.23           dN3        T2"))
> 
> cast(x, seq + detailed.name ~ treatment, value = "response")
  seq detailed.name     T1     T2
1  N1           dN1 123.23 343.23
2  N2           dN2 231.12 281.13
3  N3           dN3 231.23 901.23
6
ответ дан 30 November 2019 в 17:27
поделиться

Вы также можете использовать функцию reshape в пакете stats . У меня нет вашего образца набора данных, но он будет выглядеть примерно так:

reshape(x, idvar=c("seq","detailed.name"), timevar="treatment", direction="wide")
2
ответ дан 30 November 2019 в 17:27
поделиться
Другие вопросы по тегам:

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