我需要一个专栏与"滞后的差异"之间的具体比较.在数据 struct 中,我有一些大小写重复,我不能只指定LAG=1.我还需要填充了所有大小写并带有不同比较方向(符号)的输出.

看看它的 struct :

df <- structure(
  list(
    id = c(1, 1, 2, 2, 3, 3, 3, 4, 4, 4),
    H_A = c("H",
            "A", "H", "A", "H", "H", "A", "H", "A", "A"),
    Rk = c(6, 15, 19,
           7, 8, 8, 10, 12, 3, 3)
  ),
  row.names = c(NA,-10L),
  class = c("tbl_df",
            "tbl", "data.frame")
)

我需要以下输出:

enter image description here

我能得到的最接近的输出是使用:

df %>% 
  group_by(id) %>% 
  mutate(Rk_diff = Rk-Rk[match('A', H_A)]) %>%
  ungroup

推荐答案

我们可以在下一步打replace个0

library(dplyr)
df %>%
   group_by(id) %>%
    mutate(Rk_diff = Rk - Rk[match('A', H_A)],
    Rk_diff = replace(Rk_diff, Rk_diff == 0, -1 * (Rk_diff[H_A != 'A'][1]))) %>% 
   ungroup

-输出

# A tibble: 10 × 4
      id H_A      Rk Rk_diff
   <dbl> <chr> <dbl>   <dbl>
 1     1 H         6      -9
 2     1 A        15       9
 3     2 H        19      12
 4     2 A         7     -12
 5     3 H         8      -2
 6     3 H         8      -2
 7     3 A        10       2
 8     4 H        12       9
 9     4 A         3      -9
10     4 A         3      -9

或者另一个选项是coalesce

library(tidyr)
df %>%
   group_by(id) %>%
   mutate(Rk_diff = case_when(H_A != 'A' ~ Rk - Rk[match('A', H_A)]), 
    Rk_diff2 = -1 * Rk_diff) %>%
    fill(Rk_diff2) %>% 
    ungroup %>% 
    mutate(Rk_diff = coalesce(Rk_diff, Rk_diff2), Rk_diff2 = NULL)

-输出

# A tibble: 10 × 4
      id H_A      Rk Rk_diff
   <dbl> <chr> <dbl>   <dbl>
 1     1 H         6      -9
 2     1 A        15       9
 3     2 H        19      12
 4     2 A         7     -12
 5     3 H         8      -2
 6     3 H         8      -2
 7     3 A        10       2
 8     4 H        12       9
 9     4 A         3      -9
10     4 A         3      -9

R相关问答推荐

将带有范围的字符串转换为R中的数字载体

找出疾病消失的受试者

在R中,如何在每个堆叠的条上放置误差条,特别是当使用facet_grid时?

在R中,如何将变量(A,B和C)拟合在同一列中,如A和B,以及A和C在同一面板中?

用关联字符串替换列名的元素

基于R中的间隔扩展数据集行

如何将Which()函数用于管道%>;%

如何使用前缀作为匹配来连接数据帧?

当每个变量值只能 Select 一次时,如何从数据框中 Select 两个变量的组合?

我将工作代码重构为一个函数--现在我想不出如何传递轴列参数

随机将数据帧中特定列上的某些行设置为NA

按镜像列值自定义行顺序

如何在Quarto中使用美人鱼图表中的标记来加粗文本

使用ggplot2绘制具有边缘分布的坡度图

计算多变量的加权和

是否从列中删除★符号?

如何修改GT表中组名行的 colored颜色 ?

基于R中的引用将向量值替换为数据框列的值

如何准确地指出Read_delim所面临的问题?

使用卡环从R中的列中删除单位(&C)