r - 使用dplyr和stringr替换所有值始于

标签 r dplyr stringr

我的df

> df <- data.frame(food = c("fruit banana", "fruit apple", "fruit grape", "bread", "meat"), sold = rnorm(5, 100))
>   df
          food      sold
1 fruit banana  99.47171
2  fruit apple  99.40878
3  fruit grape  99.28727
4        bread  99.15934
5         meat 100.53438

现在,我想替换以“水果”开头的食物中的所有值,然后按食物分组并汇总已售金额和已售金额。
> df %>%
+     mutate(food = replace(food, str_detect(food, "fruit"), "fruit")) %>% 
+     group_by(food) %>% 
+     summarise(sold = sum(sold))
Source: local data frame [3 x 2]

    food      sold
  (fctr)     (dbl)
1  bread  99.15934
2   meat 100.53438
3     NA 298.16776

为什么此命令不起作用?它给我NA而不是水果?

最佳答案

它对我有用,我认为您的数据有以下因素:

在按如下所示进行数据处理时使用stringsAsFactors=FALSE,或者您可以在R环境中运行options(stringsAsFactors=FALSE)以避免相同的情况:

df <- data.frame(food = c("fruit banana", "fruit apple", "fruit grape", "bread", "meat"), sold = rnorm(5, 100),stringsAsFactors = FALSE)

df %>%
mutate(food = replace(food, str_detect(food, "fruit"), "fruit")) %>% 
group_by(food) %>% 
summarise(sold = sum(sold))

输出:
 # A tibble: 3 × 2
       food      sold
      <chr>     <dbl>
    1 bread  99.67661
    2 fruit 300.28520
    3  meat  99.88566

关于r - 使用dplyr和stringr替换所有值始于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43778696/

相关文章:

r - 将 `mutate` 数据帧变量转换为因子时指定级别

r - 计算字符串向量中连续数字的函数

R-生成一个 "missing values variable"

r - 将 grid.arrange 分配给对象

r - 使用 dplyr 从不同的 data.frame 中提取数据?

r - 使用R&dplyr进行汇总-group_by,count,mean,sd

r - 当变量包含向量的任何一个元素时,如何返回 bool 值?

r - stringr 不会安装在 R 中

r - 来自数据帧的箱线图,其中包含多个组的分位数

r - shebang 行在 R 脚本中不起作用