首页 > 解决方案 > tidyr spread 改变数值

问题描述

我正在使用类似的数据集执行此操作,并且遇到了同样的问题:

example <- mpg %>%
  select(manufacturer) %>%
  group_by(manufacturer) %>%
  count(manufacturer) %>%
  unique() %>%
  spread(manufacturer, n)

我需要在展开后合并列信息,但是该函数正在将我的数字列“n”更改为未知字符的列。当我尝试添加列时,出现此错误:

example <- mpg %>%
  select(manufacturer) %>%
  group_by(manufacturer) %>%
  count(manufacturer) %>%
  unique() %>%
  spread(manufacturer, n) %>%
  mutate(combination = 'ford'+'honda')

mutate_impl(.data, dots) 中的错误:评估错误:二进制运算符的非数字参数。

谢谢你的帮助

编辑:正如评论所说,删除引号解决了这个问题。但是,我的实际数据集具有带空格的变量名称(用于最终报告美学),因此我需要找到一种方法来纠正此问题,而无需简单地删除引号。为此,我这样做了:

example <- mpg %>% 
mutate(manufacturer = ifelse(manufacturer == 'ford' | 
manufacturer == 'honda', "combination", manufacturer)) %>% 
select(manufacturer) %>% 
group_by(manufacturer) %>%
count(manufacturer) %>%
unique() %>%
spread(manufacturer, n)

标签: rdplyrtidyrspread

解决方案


推荐阅读