bin中的bin和transpose

问题描述 投票:2回答:1

我仍然掌握着R和编码的概念,所以请耐心等待。

我的问题这是一个降维的想法,我有三个步骤。前两个我需要帮助。

  1. bin行
  2. 将已装箱的行转换为新列,这样列将增加bin的数量,行减少了bin的数量
  3. 执行PCA然后减少列

所以数据将来自:

  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
r transpose binning dimensionality-reduction
1个回答
0
投票

假设这些字母数字条目不应该代表数字,我会先运行:

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
© www.soinside.com 2019 - 2024. All rights reserved.