根据名称R dplyr乘以某些列 [英] multiply certain columns based on name R dplyr
本文介绍了根据名称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屋!
查看全文