2017-01-25 45 views
0

我有一個R中的數據框,其中所有單元格包含'0'或一個單詞(4-6個字母的短字符串)。我想將所有這些字符串值替換爲'1'。我看到許多選項替換特定的單詞或字符,但由於我有許多不同的單詞,我只想說'將所有字符串值替換爲數字'1')。將所有字符串值替換爲'

非常感謝您的幫助!

+4

http://stackoverflow.com/help/how-to-ask –

回答

3
x <- c("0","a","short","sentence") 

as.numeric(x != "0") 
[1] 0 1 1 1 

要使用data.frame工作,你必須遍歷使用lapply列和轉換回:

y <- data.frame(x,x,x) 
data.frame(lapply(y, function(x) as.numeric(x!="0"))) 
    x x.1 x.2 
1 0 0 0 
2 1 1 1 
3 1 1 1 
4 1 1 1 
+4

更好(IMO):'as.numeric(!x = 「0」)' – Jaap

+0

你還需要將一個示例與data.frame @James結合 –

1

假設df是您的數據。假設你的字符串都character變量

df = data.frame(a = c("joel", "0", "wilso"), b = c(1:3)) 
df$a <- as.character(df$a) 
df[df != '0']='1' 
df 
# a b 
#1 1 1 
#2 0 1 
#3 1 1 

df = data.frame(a = c("j", "0", "w"), b = c(1:3), 
       c = 4:6, d = c("eng", "0", "aus")) 

data.frame(lapply(df, function(x) { 
         if(is.factor(x)) { 
          x <- as.character(x) 
         } 
         x[x!="0"]="1" 
         x})) 
# a b c d 
#1 1 1 1 1 
#2 0 1 1 0 
#3 1 1 1 1 
1

我們可以使用

replace(x, x!="0", 1) 

或者只是

as.integer(x!= "0") 

如果我們有一個data.frame

df1[] <- lapply(df1, function(x) as.integer(x!="0"))