在一列(reg.exp。)中查找元素,然后在另一列中替换

时间:2016-02-18 13:36:14

标签: r grep substitution

我似乎陷入了一些非常简单的问题。我无法弄明白,也无法在这里找到答案。我尝试搜索stackoverflow近一个小时。

我想基于一列(方向“向后”)找到行,然后将另一列(金额)中的行与-1或任何数字相乘。

  1. 金额方向
  2. 1前进
  3. 2前进
  4. 3前进
  5. 4前进
  6. 1落后
  7. 2落后
  8. 3落后
  9. 所以我会得到

    1. 金额方向
    2. 1前进
    3. 2前进
    4. 3前进
    5. 4前进
    6. -1落后
    7. -2落后
    8. -3落后
    9. 我知道如何找到行:df [grep(“向后”,df $ direction),] 或如何乘以一般 - df [,1] = df [,1] ( - 1) 但我不能把它放在一起。我可以拉出我需要的那些然后繁殖然后rbind或cbidn但是如果我有一个非常大的df有很多列和行我不想再一次粘贴它我只想在一列中改变一些基于另一栏。 我管理过这样的东西,但它不想成倍增加: df $ amount [df $ direction%in%c(“backward”)]< - (( - 1)) DF $量[grep的( “向后”,DF $方向)] LT; - (( - 1)) 总是得到同样的错误: 错误:“df $ amount [grep(”向后“,df $ direction)]< - *”

      中的意外“

      如果这个问题已经存在,我真的很抱歉。我确实找到了很多类似的问题,但他们并没有帮助我。

      谢谢!

1 个答案:

答案 0 :(得分:2)

亚历克西斯说答案是:

df $ amount [grep("向后",df $ direction)]< - df $ amount [grep("向后",df $ direction)] *( - 1 )

OR

df $ amount [df $ direction%in%c(" backward")]< - df $ amount [df $ direction%in%c(" backward")] *( - 1)