R 替换数据框中列中的特定值
我真的为这样一个基本的问题道歉,我花了20分钟试图弄明白这一点。例如:R 替换数据框中列中的特定值,r,replace,R,Replace,我真的为这样一个基本的问题道歉,我花了20分钟试图弄明白这一点。例如: x <- sample(c("1","2"), 100, replace = TRUE) y <- sample(c("3","4"), 100, replace = TRUE) xy <- cbind(x,y) 现在我想用0替换x列中的所有2。根据我的真实数据,我需要将所有编码为2的女性重新编码为0 我试过: xy$x[,xy$x == 2] <- 0 xy[xy$x== 2] <- 0
x <- sample(c("1","2"), 100, replace = TRUE)
y <- sample(c("3","4"), 100, replace = TRUE)
xy <- cbind(x,y)
现在我想用0替换x列中的所有2。根据我的真实数据,我需要将所有编码为2的女性重新编码为0
我试过:
xy$x[,xy$x == 2] <- 0
xy[xy$x== 2] <- 0
women <- xy$x== 2
xy[women,] <- 0
这两种方法都不管用。前两个给出一个错误,最后一个用零替换整行。我已经在这个网站上搜索了很多,但必须有一个非常简单的解决方案,而不是困难的工作无论如何
编辑:
很抱歉,使用的样品与我的实际问题不符。我如何处理这个样品
x <- sample(c("1","2"), 100, replace = TRUE)
y <- sample(c("3","4"), 100, replace = TRUE)
xy <- cbind(x,y)
谢谢 有几个问题: xy是矩阵,但代码使用$表示数据帧 如果xy是一个数据帧,那么xy$x是一维的,但问题中的代码试图用二维对其进行索引 问题中使用women的代码试图将整行设置为0 为了使示例重现,问题应包括set.seed,以便每次调用时使用相同的随机数 问题代码的这种变化是有效的 如果您使用的R版本早于R4.0,则使用stringAsFactors=FALSE很重要;然而,对于以后的版本,这个参数是不需要的,尽管如果你把它放在里面不会有什么坏处
xy <- as.data.frame(xy, stringsAsFactors = FALSE)
xy$x[xy$x == 2] <- 0
如果xy是问题中所述的矩阵,则该方法有效:
xy[xy[, "x"] == 2, "x"] <- 0
或
只需使用replacexy,xy==2,0或xy[xy[,1]==2,1]谢谢各位,它适用于我提供的示例,但不适用于我的原始数据。如果第二列也满是1和2呢?因为此函数将替换数据帧中所有等于2的值。我只想更改第一列中的内容。很抱歉提供的示例不正确,编辑了我的文章。@JachymDvorak,因此您的示例不够好。请为示例创建字符值,然后尝试将这些字符值与数字值匹配。2 != 2.非常感谢。最后一行有效,我成功地更改了原始样本中的值!
xy[xy[, "x"] == 2, "x"] <- 0
transform(xy, x = replace(x, x == 2, 0))
transform(xy, x = ifelse(x == 2, 0, x))