Скажем, нам дается двухфакторная (M) конструкция ANOVA, т. Е. Конструкция выборки состоит из двух категориальных переменных с двумя и тремя уровнями соответственно и откликом измерения 4. Предположим также, что данные приведены в широкий формат были первыми двумя переменными, описывающими дизайн и последние четыре переменные. (Итак, суть в том, что переменные проектирования уже в длинном формате, но переменные ответа не являются.)Как расплавить/сфотографировать двухфакторный многомерный DataFrame из широкого формата в длинный?
Как расплавить данные в длинный формат?
Раствор в R:
# Data managment
library(reshape2)
# Creating sample data
set.seed(12345)
dat = data.frame(matrix(rnorm(42*4, mean=c(10,3,5,1)), ncol=4, byrow=T))
names(dat) = c('Base', 'State23', 'State42', 'End')
gen = factor(sample(2, size=42, replace=T), labels=c('WT', 'HET'))
env = factor(sample(3, size=42, replace=T), labels=c('heavySmoker', 'casualSmoker', 'nonSmoker'))
dat$genotype = gen
dat$environment = env
# Melting
melt(dat, measure.vars=c('Base', 'State23', 'State42', 'End'))
Проблема в питоне:
# Numerics
import numpy as np
from numpy.random import randint
# Data managment
import pandas as pd
from pandas import DataFrame
from pandas import Series
# Creating sample data
np.random.seed(12345)
index = pd.Index(np.arange(42))
frame = DataFrame(np.random.randn(42,4) + np.array([10,3,5,1]), columns=['Base', 'State23', 'State42', 'End'], index=index)
genotype = Series(['WT', 'HET'], name='genotype', dtype='category')
environment = Series(['heavySmoker', 'casualSmoker', 'nonSmoker'], name='environment', dtype='category')
gen = genotype[np.random.randint(2, size=42)]
env = environment[np.random.randint(3, size=42)]
gen.index = frame.index
env.index = frame.index
frame['genotype'] = gen
frame['environment'] = env
# How to melt?
frame.stack() # How to stack only the four response variables?
Я знаю, или по крайней мере, предположить, что я должен использовать функции frame.stack() и рамка .unstack() в некотором роде, но, к сожалению, это очень неудачно.
Как добавить строки в DataFrame? – reptilicus