当差异为<;时,将状态值更改为1;0英寸r

当差异为<;时,将状态值更改为1;0英寸r,r,for-loop,dplyr,R,For Loop,Dplyr,当Diff值小于0时,我试图更新数据集中的Status列,因此当Diff值为-neg数字时,我希望Status列=1以表示更改。 下面是我的数据集的示例代码,全部为数字: df <- as.data.frame(list(diff=c("4","0","0","0","0","0","0","0","0","0", "0","-30","0","0","0","0","0","0","0","0",

当Diff值小于0时,我试图更新数据集中的Status列,因此当Diff值为-neg数字时,我希望Status列=1以表示更改。 下面是我的数据集的示例代码,全部为数字:

df <- as.data.frame(list(diff=c("4","0","0","0","0","0","0","0","0","0",
                       "0","-30","0","0","0","0","0","0","0","0",
                       "14","0","0","0","0","0","0","-55","0","0",
                       "0","0","0","0","0","0","0","0","0","0",
                       "0","0","0","-40","0","0","0","0","0","0",
                       "0","0","0","0","0","0","0","0","0","0",
                       "0","-30","0","0","0","0","0","0","0","0",
                       "0","0","0","0","0"),
             status=c("0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0")))
df
library(dplyr)
df%
变异(状态=ifelse(差异<0,1,0))

您为data.frame函数提供了一组字符值,这造成了一个难题。默认情况下,这将创建因子变量,除非您设置
stringsAsFactors=FALSE
。有两件事是重要的:与0的比较将失败,而对df$status列中不存在的值的赋值也将失败

df <- data.frame(diff=c("4","0","0","0","0","0","0","0","0","0",
                       "0","-30","0","0","0","0","0","0","0","0",
                       "14","0","0","0","0","0","0","-55","0","0",
                       "0","0","0","0","0","0","0","0","0","0",
                       "0","0","0","-40","0","0","0","0","0","0",
                       "0","0","0","0","0","0","0","0","0","0",
                       "0","-30","0","0","0","0","0","0","0","0",
                       "0","0","0","0","0"),
             status=c("0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0"), stringsAsFactors=FALSE)

df你能解释一下这段代码是如何解决问题的吗?虽然这段代码可能会解决问题,但这段代码是如何解决问题的,以及为什么它会真正有助于提高你的文章质量,并可能导致更多的投票。请记住,你是在将来回答读者的问题,而不仅仅是现在提问的人。请编辑您的答案以添加解释,并指出适用的限制和假设。谢谢Joseph,这是一个梦想,有一件事我必须先删除NA的值,这样我就不会得到任何错误。我认为代码实际上不起作用。本应预计差异列的因子性质会导致数值比较出现问题。。。的确如此。
df <- data.frame(diff=c("4","0","0","0","0","0","0","0","0","0",
                       "0","-30","0","0","0","0","0","0","0","0",
                       "14","0","0","0","0","0","0","-55","0","0",
                       "0","0","0","0","0","0","0","0","0","0",
                       "0","0","0","-40","0","0","0","0","0","0",
                       "0","0","0","0","0","0","0","0","0","0",
                       "0","-30","0","0","0","0","0","0","0","0",
                       "0","0","0","0","0"),
             status=c("0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0","0","0","0","0","0",
                      "0","0","0","0","0"), stringsAsFactors=FALSE)
df$status[as.numeric(df$diff) < 0 ] <- 1