我有两个嵌套因子的实验。例如,性别(1,2)和条件(1,2),如:
factor A factor B
male cond.1
male cond.2
female cond.1
female cond.2
不幸的是,我用来导出因变量值的程序组合了标题中的因子级别,例如
male_cond.1, male_cond.2, female_cond.1, female_cond.2
456 , 5654 , 566 , 456
... ... ... ...
这是不方便的,因为当我将数据帧融合到ANOVA适当的长格式中时,我不能再根据因子的不同级别来分离数据。它看起来像这样:
1st column, 2nd column (DV)
male_cond.1, 454
male_cond.2, 5654
female_cond.1, 566
female_cond.2, 456
那么我怎样才能插入两个新的列,这些列的长度是多长,数据帧是重复我的因子的值?这两列应如下所示:
1st column (gender), 2nd column (condition),
male, cond.1
male, cond.2
femal, cond.1
female, cond.2
... ...
我自己的数据框有四个因素:电极(63)x soa(2)x stimulstype(3)x itemtype(2)。这就是我的原始数据框架:
File Fp1.PD_ShortSOA_FAM Fp1.PD_LongSOA_FAM Fp1.PD_ShortSOA_SEMplus_REAL Fp1.PD_ShortSOA_SEMplus_FICT
sub0001 0,446222 2,524,804 0,272959 1,281,349
sub0002 1,032,688 2,671,048 1,033,278 1,217,817
然后这就是转置的样子:
row.names V1 V2
File sub0001 sub0002
Fp1.PD_ShortSOA_FAM 0,446222 1,032,688
Fp1.PD_LongSOA_FAM 2,524,804 2,671,048
Fp1.PD_ShortSOA_SEMplus_REAL 0,272959 1,033,278
Fp1.PD_ShortSOA_SEMplus_FICT 1,281,349 1,217,817
Fp1.PD_ShortSOA_SEMminus_REAL 0,142739 1,405,100
Fp1.PD_ShortSOA_SEMminus_FICT 1,515,577 -1,990,458
我希望我的因子列显示为:
electrode, SOA, stimulustype, itemtype
Fp1. ShortSOA FAM
Fp1. LongSOA FAM
Fp1. ShortSOA SEMplus REAL
... ... ... ...
我尝试使用" strsplit"来自this post而且没有用。
答案 0 :(得分:0)
融化让你几乎到了那里,你只需要将params["term" + index] = _.result(_.find(n.tags, function(term_id) {
return term_id;
}), 'term_id');
列解析为单独的列。
variable
通过删除library(reshape2)
d <- transform(melt(yourdf, id = NULL),
gender = gsub("_.*$", "", variable),
condition = gsub("^[^_]*_", "", variable))
d
# variable value gender condition
# 1 male_cond.1 456 male cond.1
# 2 male_cond.2 5654 male cond.2
# 3 female_cond.1 566 female cond.1
# 4 female_cond.2 456 female cond.2
之前的所有内容,通过删除_
和因子B(条件)之后的所有内容,使用正则表达式替换来获取因子A(性别)。
如果您希望按特定顺序排列,请执行以下操作:
_