我在R中有一个数据帧,其中所有单元格都包含' 0'或一个字(4-6个字母的短串)。我想将所有这些字符串值替换为' 1'。我看到很多选项取代了特定的单词或字符,但由于我有许多不同的单词,我只想说出“将所有字符串值替换为数字' 1”的内容。
非常感谢你的帮助!
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:1)
我们可以使用
replace(x, x!="0", 1)
或者只是
as.integer(x!= "0")
如果我们有data.frame
df1[] <- lapply(df1, function(x) as.integer(x!="0"))