首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将两种数据类型从一列中分离出来

将两种数据类型从一列中分离出来
EN

Stack Overflow用户
提问于 2020-06-11 18:13:52
回答 2查看 39关注 0票数 0

我有来自几个人的数据,一些人认为他们应该使用一个列来存储名称,而另一些人则认为他们应该使用相同的列来表示值。

在下面的dataframe中,我想将备注分为数值列和字符列:

代码语言:javascript
复制
df2 <- data.frame(group = c("a", "b", "c", "d", "e", "f"), var1 = c(3, 1, 2, 4, 3, 2), 
            remark = c( 2, "abc", 8, 2, "cfd", "afd"))

我甚至不知道从哪里开始,但我希望能够>%>在其中。

EN

回答 2

Stack Overflow用户

发布于 2020-06-11 18:29:26

我们可以做以下工作

代码语言:javascript
复制
df2$remark.num <- as.numeric(as.character(df2$remark))
df2$remark.char <- sub("\\d*","",df2$remark)
df2 <- df2[,-3]

输出

代码语言:javascript
复制
> df2 
  group var1 remark.num remark.char
1     a    3          2            
2     b    1         NA         abc
3     c    2          8            
4     d    4          2            
5     e    3         NA         cfd
6     f    2         NA         afd
票数 0
EN

Stack Overflow用户

发布于 2020-06-11 18:29:56

如果我们使用as.numeric()强制remark列为数字,R将遇到无法转换的问题。我们可以这样利用:

代码语言:javascript
复制
df2$remark.num <- df2$remark %>% paste %>% as.numeric
df2$remark.alpha <- NA
df2$remark.alpha[is.na(df2$remark.num)] <- paste(df2$remark)[is.na(df2$remark.num)]

输出:

代码语言:javascript
复制
> df2
  group var1 remark remark.num remark.alpha
1     a    3      2          2         <NA>
2     b    1    abc         NA          abc
3     c    2      8          8         <NA>
4     d    4      2          2         <NA>
5     e    3    cfd         NA          cfd
6     f    2    afd         NA          afd
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62330857

复制
相关文章

相似问题

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