如何在R语言中为dea函数添加条件筛选XREF与YREF参数?
正确实现仅用k=25数据作为DEA参考集的R代码
你的问题出在R里不能直接用if k = 25这种语法来筛选参数值,得用逻辑索引来提取数据框中k=25对应的行数据。下面给你两种可行的写法:
写法一:直接在参数里筛选
这种写法比较简洁,直接通过布尔索引提取目标数据:
# 保留你原始的数据准备代码 library(Benchmarking) x <- c(4,2,4,6,9,2) y <- c(2,1,5,2,10,4) k <- c(25,25,25,30,30,30) d <- data.frame(x,y,k) # 正确的DEA调用:用d$k == 25筛选出k=25的行对应的x和y e1 <- dea(d$x, d$y, XREF = d$x[d$k == 25], YREF = d$y[d$k == 25])
这里d$k == 25会生成一个布尔向量(TRUE/FALSE),标记哪些行的k值等于25,用这个向量去索引d$x和d$y,就能得到你要的参考集数据。
写法二:先创建参考子集(更易读)
如果你的数据框比较复杂,先把k=25的子集单独存起来,代码会更清晰:
# 数据准备和上面一致 library(Benchmarking) x <- c(4,2,4,6,9,2) y <- c(2,1,5,2,10,4) k <- c(25,25,25,30,30,30) d <- data.frame(x,y,k) # 先筛选出k=25的观测子集 ref_data <- d[d$k == 25, ] # 用子集的x和y作为参考集 e1 <- dea(d$x, d$y, XREF = ref_data$x, YREF = ref_data$y)
两种写法都能实现你的需求,选哪种看你自己的代码习惯就行~
内容的提问来源于stack exchange,提问作者user4773130
相关产品推荐
相关产品推荐

