首页 > 解决方案 > 在R中将第一行除以第二行

问题描述

这是一个简单的,但我猜它很棘手(至少在 tidyverse 中),因为在此之前我有多个管道。

我想要创建第三行,它将第一行中的所有数值除以第二行(以百分比表示)并为非数值提供 NA/留空。

structure(list(date = structure(c(1590105600, 1590537600), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), A = c(106L, 140L), B = c(212L, 
320L), C = c(31L, 26L), D = c(108L, 166L), E = c(93L, 
152L), F = c(550L, 804L)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -2L))

标签: rtidyversetidyr

解决方案


使用好旧的[

df[3, -1] <- df[1, -1] / df[2, -1]
df
#         date           A        B         C           D           E           F
# 1 2020-05-22 106.0000000 212.0000 31.000000 108.0000000  93.0000000 550.0000000
# 2 2020-05-27 140.0000000 320.0000 26.000000 166.0000000 152.0000000 804.0000000
# 3       <NA>   0.7571429   0.6625  1.192308   0.6506024   0.6118421   0.6840796

使用dplyr::add_rows()

df %>% 
  add_row(.[1, -1] / .[2, -1])

  date                      A       B     C       D       E       F
  <dttm>                <dbl>   <dbl> <dbl>   <dbl>   <dbl>   <dbl>
1 2020-05-22 00:00:00 106     212     31    108      93     550    
2 2020-05-27 00:00:00 140     320     26    166     152     804    
3 NA                    0.757   0.662  1.19   0.651   0.612   0.684 

推荐阅读