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

时间:2017-05-19 15:23:55

标签: r dataframe random

我有以下数据框,它将用作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,但它仍然是同一组变量的一部分。

1 个答案:

答案 0 :(得分: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)]
}