首页 > 解决方案 > 基于现有列创建列,其中新列的值加上或减去旧列的某个值

问题描述

我正在尝试创建一个列,其中新列的值加上或减去一些固定数量或现有数量的旧列。例如,我的旧专栏是a,新专栏是b

data = data.frame(a = 2:11)
new_data = data.frame(a = 2:11, b = c(1, 4, 5, 5, 6, 8, 9, 8, 11, 12))
new_data
#>     a  b
#> 1   2  1
#> 2   3  4
#> 3   4  5
#> 4   5  5
#> 5   6  6
#> 6   7  8
#> 7   8  9
#> 8   9  8
#> 9  10 11
#> 10 11 12

标签: r

解决方案


data$b <- data$a + sample(c(0, -1, +1), nrow(data), replace = T) 

所以如果说固定数字,x请执行此操作

x <- 1
data$b <- data$a + sample(c(0, -1*x, x), nrow(data), replace = T)

根据以下评论中所述的要求进行编辑。使用pminpmax。为了演示而固定的种子

set.seed(19)
data %>% mutate(b = pmin(11, pmax(2, a + sample(-1:1, nrow(.), T)))) %>% pull(b) %>% cat

2 3 4 6 5 7 7 10 9 11

#otherwise
set.seed(19)
data %>% mutate(b = a + sample(-1:1, nrow(.), T))

   a  b
1   2  1
2   3  3
3   4  4
4   5  6
5   6  5
6   7  7
7   8  7
8   9 10
9  10  9
10 11 12

推荐阅读