2015-11-22 62 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")) 

這創建了一個新的因子列。

相關問題