根据名称R dplyr乘以某些列 [英] multiply certain columns based on name R dplyr

查看:11
本文介绍了根据名称R dplyr乘以某些列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个以下形式的数据集

Product   1/1/2020.x  1/1/2019.x  1/1/2018_x  1/1/2020.y  1/1/2019.y  1/1/2018.y
   1          10          11          10           1           1           1
   2          12          12           0           2           1           0
   3          20          10          12           2           1           2
   4          30           3           1           3           3           1
   5          21           3           1           1           3           1

我想创建一个新的数据集,其中每对x和y列(相同的日期前缀)都相乘。我不能手动操作,因为列数超过了100。结果数据帧的格式应如下所示。

Product   1/1/2020     1/1/2019    1/1/2018      
   1          10          11          10          
   2          24          12           0           
   3          40          10          24            
   4          90           9           1            
   5          21           9           1            

推荐答案

使用tidyverse

library(tidyverse)
df <- read.table(text = "Product   1/1/2020.x  1/1/2019.x  1/1/2018.x  1/1/2020.y  1/1/2019.y  1/1/2018.y
   1          10          11          10           1           1           1
   2          12          12           0           2           1           0
   3          20          10          12           2           1           2
   4          30           3           1           3           3           1
   5          21           3           1           1           3           1", header = T)
df %>% 
  pivot_longer(-Product, names_to = c("set", ".value"), names_pattern = "(.*)(.)") %>% 
  transmute(Product, set, z = x * y) %>% 
  pivot_wider(Product, names_from = set, values_from = z)
#> # A tibble: 5 x 4
#>   Product X1.1.2020. X1.1.2019. X1.1.2018.
#>     <int>      <int>      <int>      <int>
#> 1       1         10         11         10
#> 2       2         24         12          0
#> 3       3         40         10         24
#> 4       4         90          9          1
#> 5       5         21          9          1

reprex package(v1.0.0)于2021-02-03创建

这篇关于根据名称R dplyr乘以某些列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆