我有一个包含三列和很多行的数据框。其中一列包含数字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
答案 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