首页 > 解决方案 > 是否可以在 R 数据框中将列值上移一位?

问题描述

假设我们有一个这样的数据框:

Value  Image
24.34  pic_00001
232.4  pic_00002
342.34 pic_00003

Image列以相同的顺序继续,直到pic_10000完整的数据集中。

我想替换Image列值,以便它开始pic_00002- 基本上删除pic_00001和移动它们。该Values列应保持不变。换句话说,输出应该如下所示:

Value  Image
24.34  pic_00002
232.4  pic_00003
342.34 pic_00004

最多pic_10001(如果方法是将所有列值向上移动 1,则需要生成)

有人知道怎么做这个吗?

标签: rdataframe

解决方案


我会lead()从 dplyr 使用。

library(dplyr)

x <- tribble(
  ~value,   ~image,
  1,        "zero",
  2,        "one",
  3,        "two",
)

x %>% 
  mutate(lead_image = lead(image, 1, default = "manual three"))
#> # A tibble: 3 x 3
#>   value image lead_image  
#>   <dbl> <chr> <chr>       
#> 1     1 zero  one         
#> 2     2 one   two         
#> 3     3 two   manual three

reprex 包于 2021-06-30 创建 (v2.0.0 )


推荐阅读