Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.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 - Fatal编程技术网

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

R 转换数据框中列中的特定值,r,R,我有一个数据框,它由一个名为“x”的列组成,其中包含35行字母a、B、C、D、E。我想创建另一个列,其中x的所有行(值为“B”的行)都将更改为“Q”,值为“C”的行将更改为“Z”,所有其他值保持不变。或者,这些更改可能发生在原始列x本身中。我可以编写一个函数、循环或应用函数,但我认为R有更简单的方法。以下是数据: set.seed(1) x<-sample(LETTERS[1:5],35,replace=TRUE) z<-data.frame(x) z set.seed(1) 我们

我有一个数据框,它由一个名为“x”的列组成,其中包含35行字母a、B、C、D、E。我想创建另一个列,其中x的所有行(值为“B”的行)都将更改为“Q”,值为“C”的行将更改为“Z”,所有其他值保持不变。或者,这些更改可能发生在原始列x本身中。我可以编写一个函数、循环或应用函数,但我认为R有更简单的方法。以下是数据:

set.seed(1)
x<-sample(LETTERS[1:5],35,replace=TRUE)
z<-data.frame(x)
z
set.seed(1)

我们可以使用
库(车)

另外,如果我们不需要对顺序进行排序,则有一个
levels
参数

recode(z$x, "'B'='Q';'C'='Z'", levels=c('A', 'Q', 'Z', 'D', 'E'))

使用
chartr
(字符翻译)功能非常简单:

z$new <- chartr("BC", "QZ", z$x)

棒极了的家伙…感谢基本解决方案和软件包解决方案。谢谢两者都能工作,但我喜欢这个解决方案,因为代码非常简单。
recode(z$x, "'B'='Q';'C'='Z'", levels=c('A', 'Q', 'Z', 'D', 'E'))
z$new <- chartr("BC", "QZ", z$x)
> str(z)
'data.frame':   35 obs. of  2 variables:
 $ x  : Factor w/ 5 levels "A","B","C","D",..: 2 2 3 5 2 5 5 4 4 1 ...
 $ new: chr  "Q" "Q" "Z" "E" ...