R 转换数据框中列中的特定值
我有一个数据框,它由一个名为“x”的列组成,其中包含35行字母a、B、C、D、E。我想创建另一个列,其中x的所有行(值为“B”的行)都将更改为“Q”,值为“C”的行将更改为“Z”,所有其他值保持不变。或者,这些更改可能发生在原始列x本身中。我可以编写一个函数、循环或应用函数,但我认为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) 我们
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" ...