【问题标题】:Replace value with NA in next row on the same column if condition in another 3 columns are accepted如果接受另外 3 列中的条件,则将同一列下一行中的值替换为 NA
【发布时间】:2019-10-04 09:27:05
【问题描述】:

如果 3 列的条件与前一行相同,我需要将同一列下一行中的数据替换为 NA。这个条件的代码怎么写?

例如我有这样的示例数据

store camp  var    value
 a     1     ax     200
 b     2     bx     100
 a     1     ax     200
 b     2     bx     100
 c     2     cx     100
 a     1     ax     200
 c     2     cx     100

变成这样

store camp  var    value
 a     1     ax     200
 b     2     bx     100
 a     1     ax     NA
 b     2     bx     NA
 c     2     cx     100
 a     1     ax     NA
 c     2     cx     NA

有没有办法做到这一点?提前谢谢

【问题讨论】:

  • 你是指前面的列,还是上面的行
  • 我的意思是任何以前的专栏

标签: r replace conditional


【解决方案1】:

您可以使用重复的 - 这与您所拥有的相匹配

 x <- data.frame( 
 store = c( "a","b","a","b","c","a","c"),
 camp = c(1,2,1,2,2,1,2),
 var = c( "ax","bx","ax","bx","cx","ax","cx"),
 value = c( 200,100,200,100,100,200,10))

 x[ duplicated( x[ , c( "store","camp","var")]) ,"value"] <- NA

【讨论】:

  • 重复的条件是不是可以写3列以上?
  • @NicodemusSigitSutanto,一定要在向量 c("store","camp","var") 中放入任何你想要的列。您可以使用逻辑、字符或数字来选择列
猜你喜欢
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 2020-08-13
  • 1970-01-01
  • 2022-07-27
相关资源
最近更新 更多