我正在尝试根据现有变量自动生成几个新变量。我想使用它们各自的最小和最大变量来获取“a”、“b”和“c”中的每一个的值范围。我正在模拟的数据来自聚合到区域统计数据的卫星传感器,这意味着每一行都是一个多边形特征。
这是一个要使用的玩具数据框:
dat <- data.frame(a.min = runif(100, 0, 100),
b.min = runif(100, 0, 10),
c.min = runif(100, 0, 0.5),
a.max = runif(100, 100, 200),
b.max = runif(100, 10, 20),
c.max = runif(100, 0.5, 1))
这是执行此操作的手动方式:
dat$a.range <- dat$a.max - dat$a.min
dat$b.range <- dat$b.max - dat$b.min
dat$c.range <- dat$c.max - dat$c.min
head(dat)
如何使用 dplyr 以自动化方式完成此任务?我知道我的数据中会有 NA 值。
到目前为止,我有:
dat %>% select(dat, matches("min|max"))
我试图定义一个范围函数:
rng <- function(x,y){y - x})
我不知道选择后去哪里。我想我需要使用“mutate”或“cross”?
干杯和感谢!