首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >因子水平不相等:强制特征向量和因子向量,强制为特征向量和因子

因子水平不相等:强制特征向量和因子向量,强制为特征向量和因子
EN

Stack Overflow用户
提问于 2019-10-23 22:32:20
回答 1查看 325关注 0票数 0

我不确定这里有什么问题。

代码语言:javascript
运行
复制
dplyr::tibble(x = rnorm(100), group = rep(c('a','b'), 50)) %>% 
  dplyr::group_by(group) %>% 
  mutate(bin = OneR::bin(x, nbins = 10))

因子水平不相等:强制字符绑定因子向量,强制为字符向量绑定字符和因子向量,强制为字符向量

但当添加labels = 1:10时,这是可行的。

代码语言:javascript
运行
复制
dplyr::tibble(x = rnorm(100), group = rep(c('a','b'), 50)) %>% 
  dplyr::group_by(group) %>% 
  mutate(bin = OneR::bin(x, nbins = 10, labels = 1:10))

我想知道第一种情况下出错的原因。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-23 23:48:31

嗯,正如Matt指出的,这与其说是一个错误,不如说是一个警告。警告依赖于这样一个事实,即您的存储箱依赖于每个组中的数据。由于bin名称(也称为labels)是自动设置的,因此您可以为每个组获取不同的因子级别。在内部,dplyr将所有组绑定在一起,实际上是将它们加入其中。在连接时,不等因子标签不应该匹配在一起(您只看到字符串,但它在下面以数字形式存储)。因为您更愿意保留每个值的标签,而不是数字,所以dplyr将其转换为字符。请看下面的示例,其中我手动进行分组:

代码语言:javascript
运行
复制
set.seed(0)
dplyr::tibble(x = rnorm(100), group = rep(c('a','b'), 50)) %>% 
 dplyr::group_by(group) %>% 
  mutate(bin = OneR::bin(x, nbins = 10))

set.seed(0)
data1 <- dplyr::tibble(x = rnorm(100), group = rep(c('a','b'), 50)) %>% 
  filter(group == "a") %>% 
  mutate(bin = OneR::bin(x, nbins = 10))

set.seed(0)
data2 <- dplyr::tibble(x = rnorm(100), group = rep(c('a','b'), 50)) %>% 
  filter(group == "b") %>% 
  mutate(bin = OneR::bin(x, nbins = 10))

# same warning pops out
bind_rows(data1, data2)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58525204

复制
相关文章

相似问题

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