Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 替换数据框中列中的特定值_R_Replace - Fatal编程技术网

R 替换数据框中列中的特定值

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

我真的为这样一个基本的问题道歉,我花了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

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))