r语言 - 随机删除从组中选择的列,不包括一个列



我有以下数据框,它将用作 logit 回归的输入:

my_frame<-data.frame(y=c(1,0,1),A=c(0,1,1),B=c(1,0,0),C=c(0,0,0),t=c(1,1,1),x=c(1,0,0),z=c(1,0,1))

知道虚拟变量 A、B 和 C 是通过线性方程 (A+B+C=1( 连接的,我需要在继续之前删除三个中的一个。

 y A B C t x z
 1 0 1 0 1 1 1
 0 1 0 0 1 0 0
 1 1 0 0 1 0 1

现在,这是困难的部分。我想随机排除由 A、B、C 和 D 组成的组的一列,但不排除在数据帧的最后一行中值为 1 的列。在我的示例中,我希望随机排除 B 和 C 中的一个。

列 D 不存在,因为在此特定数据框中,它的值始终为 0,但它仍然是同一组变量的一部分。

我真的不明白,你关于 D 列的最后一句话是什么意思,但无论如何,你可以试试这个:

my_frame<-data.frame(y=c(1,0,1),A=c(0,1,1),B=c(1,0,0),C=c(0,0,0),t=c(1,1,1),x=c(1,0,0),z=c(1,0,1))
allRelevantCols <- c("A", "B", "C")
# Get all columns, which can be excluded
allColsToExclude <- allRelevantCols[which(my_frame[nrow(my_frame), allRelevantCols] == 0)]
for (i in 1:<how often you would like to run this>) {
  colsToExclude <- c(sample(allColsToExclude, 1))
  my_frame[, -which(colnames(my_frame) %in% colsToExclude)]
}

最新更新