我仍然掌握着R和编码的概念,所以请耐心等待。
我的问题这是一个降维的想法,我有三个步骤。前两个我需要帮助。
所以数据将来自:
A B C D
1 W1 X1 Y1 Z1
2 W2 X2 Y2 Z2
3 W3 X3 Y3 Z3
4 W4 X4 Y4 Z4
5 W5 X5 Y5 Z5
6 W6 X6 Y6 Z6
所以,如果我按2并转置它会看起来像这样:
A A B B C C D D
1 W1 W2 X1 X2 Y1 Y2 Z1 Z2
2 W3 W4 X3 X4 Y3 Y4 Z3 Z4
3 W5 W6 X5 X6 Y5 Y6 Z5 Z6
我很确定我需要在某种功能中嵌套bin并进行转置,但是我不确定哪个是第一个,或者根本不知道如何处理它,所以任何建议都会有所帮助!
我真的希望这是有道理的,让我知道如果需要我怎么能改写!
编辑我正在使用整数数据类型,这里是我想要bin和expand的实际数据的片段。
> head(dataset[1:4])
EMG1 EMG2 EMG3 EMG4
1 32744 32571 32935 32279
2 32788 32934 32767 32624
3 32828 33202 32587 32377
4 32870 33269 32423 32954
5 32838 33319 32126 32721
6 32903 33502 32652 32151
假设这些字母数字条目不应该代表数字,我会先运行:
dat[] <- lapply(dat, as.character) # ensures we get rid of factors
这使用在函数内循环逻辑索引,该函数在数据帧中连续应用,以从每列创建两个列表。然后将其强制转换为数据帧。最初的结果res
有一些奇怪的名字,通过一些简单的正则表达式工作缩短了。
res <- data.frame( lapply(dat,
function(cl){list( list(cl[c(TRUE,FALSE)],
list(cl[!c(TRUE,FALSE)]) )) }))
names(res) <- sub("\\..+$", "", names(res))
> res
A A B B C C D D
1 W1 W2 X1 X2 Y1 Y2 Z1 Z2
2 W3 W4 X3 X4 Y3 Y4 Z3 Z4
3 W5 W6 X5 X6 Y5 Y6 Z5 Z6