替换数据框的每列的特殊值

时间:2017-12-29 19:33:03

标签: r if-statement dataframe

如果我想用-100替换数据框的所有列的所有负值以及(999,9991,9992,9996)的值,我应该怎么做。我想将其保存为新数据帧而不是同一数据帧。 在我的数据集中,我有数百列

x<-c(-1,-2,0,1,9991)
y<-c(1,2,3,4,999)
z<-c(100,101,-999,9992,9996)
data<-as.data.frame(cbind(x,y,z))

1 个答案:

答案 0 :(得分:1)

使用lapply替换每列中的值的解决方案。

data2 <- data

data2[] <- lapply(data2, function(x){
  x[x < 0 | x %in% c(999, 9991, 9992, 9996)] <- -100
  return(x)
})
data2
#      x    y    z
# 1 -100    1  100
# 2 -100    2  101
# 3    0    3 -100
# 4    1    4 -100
# 5 -100 -100 -100