replace()函数重新编码整列

时间:2015-06-01 09:13:40

标签: r replace

我正在使用R,需要在列表中重新编码一些变量。清单如下:

> list1

Group.1     x
1        4000    
2        3890

Group.1列中的哪个位置我想将1替换为male,将2替换为female

我尝试使用replace()函数执行此操作:

replace(list1,list1$Group.1 == "1", "male")

返回

Group.1     x
male        4000    
male        3890

即,它也将Group.1 == 2替换为男性。我错过了一步吗?我可以通过使用替换函数看到 - Group.1 == 1应该将replace命令限制为Group.1中等于1的值。看来这个标准没有做任何事情。

3 个答案:

答案 0 :(得分:3)

$()对矢量而不是data.frames进行操作。试试这个:

// for strings
$(".element").mark("query here");
// for RegExp
$(".element").mark(new RegExp(/query reg[a-zA-Z]+/));
// for array
$(".element").mark(["string query", new RegExp(/query arr[a-z]+/)]);

要更改数据,您可以执行以下操作:

replace

您尝试做的事情看起来像> replace(df$Group.1,df$Group.1 == 1, "male") [1] "male" "2" 列的级别为> df$Group.1 <- replace(df$Group.1,df$Group.1 == 1, "male") > df Group.1 x 1 male 4000 2 2 3890 的好应用程序。

答案 1 :(得分:1)

这是使用mapvalues()的解决方案。你拥有的东西看起来不像是一个列表,而是一个data.frame。也许你在考虑Python的名字?

#make dataframe
df = data.frame(group.1 = c(1, 2),
                x = c(4000, 3890))

library(plyr)
df$group.1 = mapvalues(df$group.1, c(1, 2), c("Male", "Female"))
df

这给出了:

group.1      x
"Male"    4000
"Female"  3890

mapvalues的好处是它也适用于NA值。

答案 2 :(得分:0)

使用{% block fos_user_content %}<br> {% include "FOSUserBundle:Registration:register_content.html.twig" %}<br> {% endblock fos_user_content %} 替换正则表达式将是另一种方法。

stringr