根据另一数据框的值删除一个数据框中的列-条件循环

时间:2018-09-14 14:39:25

标签: r csv dataframe if-statement conditional

嗨,所以我在遍历我的数据帧时遇到了一些问题,并根据抑制= 1的条件删除了列。因此,循环将需要遍历df1的每一列,并删除同一变量的抑制= 1列。需要确定抑制= 1的特定行在两个df中都具有相同的变量。

所以有两个数据帧。 df1包含所有数据,df2包含基于df1变量的条件。

df1 <- data.frame("ID" = c(1,2,3,4,5), "Age" = c(19,50,46,32,28))

df2 <- data.frame("Variable" = c("ID", "Age"), "Suppress" = c(1,0))

我遇到的主要问题是,当创建诸如df1和df2之类的数据帧时,当前存在的循环适用,但是对于导入csv文件并使用该数据而言,则不适用。

是数据帧的格式,还是需要调整循环以适用于csv导入?我怀疑是后者。

这是我当前遇到的循环:

for(i in names(df1)){
   if(df2$Variable == names(df1[i]) & df2$Suppress == 1){
      df1[i] <- NULL
   }
}

另一个版本...基本上相同

for(i in names(df1)){
   if(df2$Variable %in% names(df1[i]) & df2$Suppress == 1){
      df1[i] <- NULL
   }
}

我无法在此处发布csv,但是我建议尝试使用类似于df1和df2的导入的csv文件运行上述代码。

注意:df1和df2都将作为csv文件导入。

概述:为什么当前循环不适用于导入的csv数据,以及基于df2的抑制变量删除列的替代方法是什么。

谢谢

0 个答案:

没有答案