2015-11-22 63 views
1

如何创建基于数值将被赋予的名称如下字符值的新列:0 =用户1 =管理员,2 =赞助根据R中的数值条件创建一个新的字符值列?

dat1 
     one two three 
1  Bob 0 
2  Mary 0 
3 restaurant 2 
4 company 1 

因此基于这些名字,怎么我得到这个:

dat1 
     one two three 
1  Bob 0 user 
2  Mary 0 user 
3 restaurant 2 sponsor 
4 company 1 admin 

dat1 <- data.frame(one=c("Bob", "Mary", "restaurant", "company"), two=c("0","0", "2", "1")) 

是的,我知道如何通过简单地创建他们:

dat1 <- data.frame(one=c("Bob", "Mary", "restaurant", "company"), two=c("0","0", "2", "1"), three=c("user", "user", "sponsor", "admin")) 

但是,什么是将瓶坯塔斯功能K + 因此,在第三栏下,根据第二栏下的相应行,我要0 = user,1 = admin,2 = sponsor。

回答

1

在您的示例中,two列是一个因素。作为因子的整数表示dat1$two为1表示0,2表示1,3表示2。因此,如果我们将它用作我们想要获得的字符向量上的索引向量,我们可以相应地扩展向量。

dat1$three <- c("user", "admin", "sponsor")[dat1$two] 
dat1 
#   one two three 
# 1  Bob 0 user 
# 2  Mary 0 user 
# 3 restaurant 2 sponsor 
# 4 company 1 admin 

如果你还没有在two列的一个因素,你可以把它变成一个与以下。

dat1$three <- c("user", "admin", "sponsor")[as.factor(dat1$two)] 

这些都创建一个新的字符列。

更新:正如弗兰克提到的,更习惯的方法是将two列简单化并应用不同的标签。

dat1$three <- factor(dat1$two, labels = c("user", "admin", "sponsor")) 

这创建了一个新的因子列。

相关问题