【问题标题】:Error in dplyr summarise_impl(.data, dots) : expecting a single valuedplyr summarise_impl(.data, dots) 中的错误:期望单个值
【发布时间】:2016-12-26 22:47:03
【问题描述】:

我想将changesize 标准化为以下代码,在我看来我的代码没有问题。为什么这给了我错误

summarise_impl(.data, dots) 中的错误:期望单个值

str(pricechange_0.5_2)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':1907600 obs. of  13 variables:
$ url           : chr  "http://item.yhd.com/item/1242267" 
$ time          : chr  "2016-01-02" "2016-01-02" "2016-01-02" "2016-01-02" ...
$ changPrice    : num  0.997 1 1 1 1 ...
$ classify      : Factor w/ 251 levels "","Clothing"....
$ changesize    : num  -0.334 0 0 0 0 ...
$ abs_changesize: num  0.334 0 0 0 0 ...

library(dplyr)
by_url <- group_by(pricechange_0.5_2,url)
url_datad <- summarise(by_url,url_sd_chasize=(changesize -
                                              mean(changesize))/sd(changesize))

这是我的数据样本。

A tibble: 10 × 3                                                                           
                             url  hangesize abs_changesize                                                                                      
                           <chr>      <dbl>          <dbl>                                                       
http://item.yhd.com/item/1242267 -0.3343999      0.3343999
  http://item.jd.com/418657.html  0.0000000      0.0000000
...

还有其他方法可以将changesize 标准化为url

【问题讨论】:

  • 您能给我们提供您的数据样本吗?你可以做dput(head(pricechange_0.5_2,url))并复制结果来做到这一点,它会更容易解决你的问题
  • 对于每个 pricechange_0.5_2, url 组合,您有多个 changesize 值,而 summarise 并非旨在处理它。就是这样。
  • 好建议。非常感谢。
  • @DavidArenburg 我想就像你说的那样,但是使用 mtcars 我尝试了这个:by_am &lt;- group_by(mtcars, am) 然后是这个url_datad &lt;- summarise(by_am, sd_chasize = mean(mpg)/sd(mpg)),它的工作原理是把它搞砸的减号
  • 不,你没听懂我说的话。如果您想使用mtcars 重现此内容,请尝试mtcars %&gt;% group_by(cyl) %&gt;% summarise(mpg) - 也许这会帮助您理解

标签: r dplyr


【解决方案1】:

这是一个选项:

url_unique <- unique(pricechange_0.5_2$url)

by_url <- list()

for(i in 1:length(url_unique)){
  by_url[[i]] <- filter(pricechange_0.5_2, url == url_unique[i])
  by_url[[i]] <- scale(by_url[[i]])
}

by_url <- do.call("rbind", by_url)

这将缩放按 url 分组的 data.frame 中的所有值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    相关资源
    最近更新 更多