【发布时间】:2018-09-14 14:39:24
【问题描述】:
嗨,所以我在循环我的数据框并根据抑制 = 1 的条件删除列时遇到问题。因此循环需要遍历 df1 的每一列并删除相同变量的列抑制 = 1。它需要确定suppress = 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,但我建议尝试使用导入的 csv 文件(类似于 df1 和 df2)运行上述代码。
注意:df1 和 df2 都作为 csv 文件导入。
回顾:为什么当前循环不适用于导入的 csv 数据以及基于 df2 的抑制变量删除列的替代方法。
谢谢
【问题讨论】:
-
您有
for(i in names(df1)),然后是df2$Variable == names(df1[i]),但i已经是df1列的名称。只需df2$Variable == i。另外,使用&&而不是&,并且在循环中你有一个错字,它是df1而不是df。我投票结束,因为离题/简单的错字。 -
您好,df2$Variable == 我的建议没有奏效。感谢您让我意识到这个错字,我编辑了这个问题。您还有其他建议吗?
-
我撤回了我的近距离投票。
标签: r csv dataframe if-statement conditional