r - 基于现有列创建列,其中新列的值加上或减去旧列的某个值
问题描述
我正在尝试创建一个列,其中新列的值加上或减去一些固定数量或现有数量的旧列。例如,我的旧专栏是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
解决方案
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)
根据以下评论中所述的要求进行编辑。使用pmin
和pmax
。为了演示而固定的种子
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
推荐阅读
- java - 获取 java.lang.ClassCastException: javax.xml.bind.JAXBElement 在实现 ItemProcessor 时无法转换为 com.[mySchema]
- c# - CS0201 只有赋值、调用、递增、递减和新对象表达式可以用作语句
- python - Pandas 将多个字符串和 Nan 列合并为一个
- sql-server - SQL Server Reporting Services 无法绑定多部分标识符
- java - 删除一个JTable的列数
- javascript - 在音乐结束时随机化 javascript 音频变量
- fortran - Gnuplot 命令在终端窗口中留下大量不必要的输出文本
- angular - Angular 6 + Popper.js(没有 jQuery)
- android - 无法使用凌空发送 POST JsonObjectRequest
- wordpress - 在 wp-config 中编辑后,我无法访问我的 wordpress 管理员