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