【问题标题】:bin and transpose in RR中的bin和转置
【发布时间】:2019-08-01 05:40:45
【问题描述】:

总的来说,我仍然掌握 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 和转置,但我不确定哪个先出现,或者根本不知道如何处理这个问题,所以任何建议都会有所帮助!

我真的希望这有点道理,如果需要,请告诉我如何改写!

编辑 我正在使用整数数据类型,这是我想要分箱和扩展的实际数据的 sn-p。

> 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

【问题讨论】:

  • 试试do.call(cbind, split(dat, 1:nrow(dat) %% 2 == 0))
  • @markus 有没有办法使用 t() 进行 cbind 转置?

标签: r transpose binning dimensionality-reduction


【解决方案1】:

假设这些字母数字条目不应该是数字的替代品,我将首先运行:

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

【讨论】:

  • 感谢您指出这一点。字母数字条目数字的替代品。很抱歉造成混乱。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 2020-09-28
  • 1970-01-01
  • 2017-06-17
  • 1970-01-01
  • 2016-01-22
  • 1970-01-01
相关资源
最近更新 更多