尝试在数据框中用零替换一组数字

时间:2019-06-24 09:32:54

标签: r

我有一个包含三列和很多行的数据框。其中一列包含数字80803和9995。我想用0代替此列中的特定数字80803和9995。

假设我的数据框称为df。 我试图使用像gsub(80803,0,df)这样的gsub函数。 但是会显示错误,指出pattern has length > 1 and only the first element will be used的状态。

这是我的df外观的示例。只是有更多的行。

a <- c(85.42, 80.80, 78.56 , 70.40)
b <- c(110, 80803, 9995, 50)
c <- c(3, 4 , 7, 5)
df <- data.frame(a, b, c)
df
      a     b c
1 85.42   110 3
2 80.80 80803 4
3 78.56  9995 7
4 70.40    50 5

这就是我想要我的df的样子。

df
      a     b c
1 85.42   110 3
2 80.80     0 4
3 78.56     0 7
4 70.40    50 5

3 个答案:

答案 0 :(得分:3)

您可以在基本R中解决此问题。

 df$b[df$b == 80803|df$b == 9995] <- 0

答案 1 :(得分:2)

我们可以使用%in%创建一个逻辑向量,并通过将其赋值为0来替换这些值

df$b[df$b %in% c(80803, 9995)] <- 0
df
#      a   b c
#1 85.42 110 3
#2 80.80   0 4
#3 78.56   0 7
#4 70.40  50 5

注意:仅在base R中完成

注意2:这也可以采用任意长度的向量,并且如果有NA个元素也不会有问题

答案 2 :(得分:1)

您也可以使用replace

df$b <- replace(df$b, df$b %in% c(80803, 9995), 0)
df
#      a   b c
#1 85.42 110 3
#2 80.80   0 4
#3 78.56   0 7
#4 70.40  50 5