r - 使用 mutate 创建行而不是列

标签 r dplyr

一些数据:

webdata %>% dput
structure(list(`2021-01-01` = c(9769.77145143346, 240.374021734625
), `2021-01-02` = c(9747.83506410782, 205.305063093191), `2021-01-03` = c(10244.2824708895, 
253.285005879351), `2021-01-04` = c(9903.98090317497, 250.068739190171
), `2021-01-05` = c(10126.8521068156, 152.172995948704), Total = c(sessions = 49792.7219964214, 
conversions = 1101.20582584604)), class = "data.frame", row.names = c("sessions", 
"conversions"))

看起来像这样:

webdata
            2021-01-01 2021-01-02 2021-01-03 2021-01-04 2021-01-05     Total
sessions      9769.771  9747.8351  10244.282  9903.9809  10126.852 49792.722
conversions    240.374   205.3051    253.285   250.0687    152.173  1101.206

我想添加一行 ConversionRate,即 conversions/sessions。这就像转置 dplyr 操作,因为我需要行突变。

我该怎么做才能让 ConversionRate 有一个新行,即 conversions/sessions

最佳答案

已更新 如果您想使用行名而不是​​索引来执行操作,我认为此解决方案可能对您的原始数据集有帮助:

library(dplyr)
library(tibble)

df %>%
  summarise(across(everything(), ~ (.x)[which(rownames(df) == "sessions")]/
                     .x[which(rownames(df) == "conversions")]),
            rowname = 'ConversionRate') %>%
  bind_rows(df %>% 
              rownames_to_column()) %>%
  column_to_rownames("rowname")

               2021-01-01 2021-01-02  2021-01-03 2021-01-04  2021-01-05       Total
ConversionRate   40.64404   47.47976    40.44567   39.60503    66.54829    45.21654
sessions       9769.77145 9747.83506 10244.28247 9903.98090 10126.85211 49792.72200
conversions     240.37402  205.30506   253.28501  250.06874   152.17300  1101.20583

关于r - 使用 mutate 创建行而不是列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68143652/

相关文章:

c - 为什么相同的函数在链接其他目标文件后表现不同?

逐行计算

javascript - 如何将总计添加到 DT::datatable?

r - 使用列索引而不是列名在 R dplyr 中进行变异

r - 创建从 0 到表变量中的值的新列

r - 在 mutate 内循环

r - 在 r 中的多重响应多重答案考试问题上获得部分学分

java - 排名变量、排序

r - 在purrr::map中相当于 `break`

重复将条件摘要应用于数据框中的组