我一直在继续学习r来从excel过渡,我想知道解决以下问题的最佳方法是什么,或者至少我可以使用什么工具:
我有一个大的数据集(100K+行(和几列,我可以从中生成一个信号,矢量中的每个值的范围可以在0到3之间。
sig1 sig2 sig3 sig4
1 1 1 1
1 1 1 1
1 0 1 1
1 0 1 1
0 0 1 1
0 1 2 2
0 1 2 2
0 1 1 2
0 1 1 2
我想使用四列中每个单元格的状态生成复合信号,然后看看每个复合信号告诉我时间序列中的返回情况。对于这个问题,范围只是生成组合。
因此,例如,一个复合信号将是当矢量中的所有四个单元都=0时。我可以生成一个新列,当该情况为TRUE时,该列读取TRUE,而在其他情况下为false,然后继续计算它如何影响数据帧其余部分的返回。
问题是,我想检查四列的所有组合,所以0000、0001、0002、0003等等,这是相当多的。根据我对r的了解,我只知道如何通过对每个组合使用mutate()
并显式输入要检查的条件来做到这一点。我想有更好的方法可以做到这一点,但我还没有找到。
谢谢你的帮助!
我认为可以将列粘贴在一起以获得唯一的组合,然后将其转换为伪变量:
library(dplyr)
library(dummies)
# Create sample data
data <- data.frame(sig1 = c(1,1,1,1,0,0,0),
sig2 = c(1,1,0,0,0,1,1),
sig3 = c(2,2,0,1,1,2,1))
# Paste together
data <- data %>% mutate(sig_tot = paste0(sig1,sig2,sig3))
# Generate dummmies
data <- cbind(data, dummy(data$sig_tot, sep = "_"))
# Turn to logical if needed
data <- data %>% mutate_at(vars(contains("data_")), as.logical)
data