R语言 根据另一列的值改变新列并粘贴现有列的值

n8ghc7c1  于 2023-11-14  发布在  其他
关注(0)|答案(2)|浏览(107)

以下是我的数据集的简化版本:

df <- data.frame(
  category = c(1,2,3,4,5), 
  yend = c(13, 15, 4, 18, 6), 
  stringsAsFactors = FALSE)

字符串
我想用相同的yend值对y进行变异,但下面是一个类别。我想有多种方法可以做到这一点,我想要的输出是这样的:

category yend  y
1        1   13  0
2        2   15 13
3        3    4 15
4        4   18  4
5        5    6 18


我一直在尝试的是:

df_test <- df |>
  mutate(y=case_when(
    category=='1' ~ '0'),
    category=='2' ~ [[[TAKE VALUE FROM yend, category=1]]]


但我不知道如何写最后一行。我会做同样的类别2至5。我想有多种方法来解决这个问题,我可能是复杂的太多。
多谢了!

0mkxixxg

0mkxixxg1#

df |> mutate(y = lag(yend,1,default=0))

字符串

category yend  y
1        1   13  0
2        2   15 13
3        3    4 15
4        4   18  4
5        5    6 18

t9eec4r0

t9eec4r02#

可以使用dplyr::lag

library(dplyr, warn = FALSE)

df |>
  mutate(y = lag(yend, default = 0))
#>   category yend  y
#> 1        1   13  0
#> 2        2   15 13
#> 3        3    4 15
#> 4        4   18  4
#> 5        5    6 18

字符串

相关问题