首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将所有字符串值替换为“1”

将所有字符串值替换为“1”
EN

Stack Overflow用户
提问于 2017-01-25 18:10:00
回答 3查看 2K关注 0票数 0

我在R中有一个数据帧,其中所有的单元格要么包含'0‘,要么包含一个单词( 4-6个字母的短字符串)。我想将所有这些字符串值都替换为“1”。我看到了许多替代特定单词或字符的选项,但由于我有许多不同的单词,我只想说类似于“将所有字符串值替换为数字”1“)。

非常感谢你的帮助!

EN

回答 3

Stack Overflow用户

发布于 2017-01-25 18:14:54

代码语言:javascript
运行
复制
x <- c("0","a","short","sentence")

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

要使用data.frame,您必须使用lapply遍历列并转换回来:

代码语言:javascript
运行
复制
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
票数 3
EN

Stack Overflow用户

发布于 2017-01-25 18:16:17

假设df是您的数据。假设字符串都是character变量

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2017-01-25 18:28:28

我们可以使用

代码语言:javascript
运行
复制
 replace(x, x!="0", 1)

或者只是

代码语言:javascript
运行
复制
as.integer(x!= "0")

如果我们有一个data.frame

代码语言:javascript
运行
复制
df1[] <- lapply(df1, function(x) as.integer(x!="0"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41848747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档