创建 Excel SUMIF 函数的 R 版本,可用于测量连续在多个数据集上运行的模型的性能

2023-12-26

首先,这个问题是一个后续问题最近的问题 https://stackoverflow.com/questions/74956321/creating-the-equivalent-of-a-sumif-function-in-excel/74958483#74958483我在 Stack Overflow 上的回答令人满意,但在更复杂的领域/应用程序中。

然而,这一次,我在多个数据集上所做的选择以及这些数据集的相应真实模型上复制相同的计算/操作,这意味着相同的函数不能直接应用。

而且,一个更大的问题是,当将数据集的文件夹加载到 R 中的对象中而不是将一个数据集加载到对象中时,它会自动将 31 列命名为 V1:31,并且在之后我无法轻松地重命名每个数据集的列他们已加载。

所以,而不是有

df<- read.csv("0-11-3-462.csv", header = FALSE)
# change column names of all the columns in the dataframe 'df'
colnames(df) <- c("Y", "X1","X2", "X3", "X4","X5", "X6", "X7","X8", "X9",
                  "X10","X11", "X12", "X13","X14", "X15", "X16","X17", 
                  "X18", "X19","X20", "X21", "X22","X23", "X24", "X25",
                  "X26", "X27", "X28","X29", "X30")
True_IVs <- df[1, -1]

结果是:

> str(True_IVs)
'data.frame':   1 obs. of  30 variables:
 $ X1 : chr "0"
 $ X2 : chr "0"
 $ X3 : chr "0"
 $ X4 : chr "1"
 $ X5 : chr "0"
 $ X6 : chr "0"
 $ X7 : chr "0"
 $ X8 : chr "0"

...

我现在有:

filepaths_list <- list.files(path = filepath, full.names = TRUE, recursive = TRUE)
datasets <- lapply(filepaths_list, read.csv, header = FALSE)

True_IVs <- lapply(datasets, function(j) {j[1, -1]})

datasets <- lapply(datasets, function(i) {i[-1:-3, ]})
datasets <- lapply(datasets, \(X) { lapply(X, as.numeric) })

数据集看起来像这样(其中 V 实际上一直到 V31,当然这只是数据集对象中第一个数据集的头部):

> head(datasets[[1]], n = 5)
                 V1           V2          V3          V4           V5
1 Regressor present            0           0           0            1
2                              1           2           3            4
3                 Y           X1          X2          X3           X4
4       4.119024459 -1.350655759 1.901787258 0.205749783  0.242920532
5       1.737430635   0.26677565 0.054290757 1.510124319 -0.618655652
            V6           V7          V8           V9         V10
1            0            0           0            0           0
2            5            6           7            8           9
3           X5           X6          X7           X8          X9
4 -0.405946237 -0.667673545 0.745735562  0.143317951 1.376182976
5  0.289294477 -0.220927214 0.251479422 -0.094245944 0.792214818

跳到上一个问题开始的同一部分,现在在更高维度的情况下,对于 IVs_Selected_by_BE,结果为:

> IVs_Selected_by_BE
[[1]]
 [1] "V3"  "V4"  "V5"  "V6"  "V9"  "V11" "V14" "V16" "V18" "V20" "V21"
[12] "V23" "V26" "V27" "V28" "V29" "V31"

[[2]]
 [1] "V3"  "V6"  "V7"  "V8"  "V9"  "V12" "V13" "V14" "V15" "V17" "V18"
[12] "V21" "V22" "V23" "V24" "V25" "V26" "V30"

这很烦人和令人不安,但同样的情况(或多或少)发生在

True_Regressors now as well:
[[1]]
 [1] "V5"  "V11" "V14" "V20" "V21" "V23" "V26" "V27" "V28" "V29" "V31"

[[2]]
 [1] "V7"  "V8"  "V14" "V15" "V17" "V18" "V21" "V22" "V24" "V26" "V30"

注意:True_Regressors 是通过运行以下命令获得的:

True_Regressors <- lapply(True_IVs, function(i) { names(i)[i == 1] })
# verus only having to use this for the single dataset case previously
True_Regressors <- names(True_IVs)[True_IVs == 1]

我的问题是每个 V 右边的数字都是错误的,它们都大了 1。


带包装vroom https://vroom.r-lib.org/index.html这很简单:

  • 全部读完.csv文件在你的getwd()一次性放入数据帧中,将文件源存储在“source_file”列中:
library(dplyr)
library(vroom)
all_data <- vroom(list.files(pattern = 'csv'), id = 'source_file')

(实际上你没有读入它们,而是创建一个查找索引,该索引在需要时执行......这使得 vroom 如此之快)

  • 重命名列(“source_file”除外):
names(all_data)[-1] <- paste0('X', 1:(ncol(all_data)-1))
  • 添加行号(每个源文件)作为第二列:
all_data <- all_data |>
    group_by(source_file) |>
    mutate(row_number = row_number(), .before = 2)

到目前为止的输出:

> all_data |> head(3)
# A tibble: 3 x 38
# Groups:   source_file [1]
  source_f~1 row_n~2    X1    X2    X3    X4    X5    X6    X7    X8    X9   X10
  <chr>        <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 file1.csv        1   418   676   712   243   319    82   699   851   501   207
2 file1.csv        2   688   402   762   964   895   513   424   335   993   119
3 file1.csv        3   135   201    37    13   104   378   661   874   586   302
# ... with 26 more variables: X11 <dbl>, X12 <dbl>, X13 <dbl>, X14 <dbl>,
#   X15 <dbl>, X16 <dbl>, X17 <dbl>, X18 <dbl>, X19 <dbl>, X20 <dbl>,
#   X21 <dbl>, X22 <dbl>, X23 <dbl>, X24 <dbl>, X25 <dbl>, X26 <dbl>,
#   X27 <dbl>, X28 <dbl>, X29 <dbl>, X30 <dbl>, X31 <dbl>, X32 <dbl>,
#   X33 <dbl>, X34 <dbl>, X35 <dbl>, X36 <dbl>, and abbreviated variable names
#   1: source_file, 2: row_number
# i Use `colnames()` to see all variable names
  • filter/ select / mutate... 如所须:
True_IVs <- all_data |>
    filter(row_number == 1) |>
    select(X1)

datasets <- all_data |> filter(row_number > 3)

Edit如果如所示,您需要跳过前导行,您可以通过设置skip论点:e. G。vroom(..., skip = 2)跳过第 1-2 行。

如果您需要所有前导行但稍后重新排序,您可以设置列名称,例如:

all_data <- vroom(list.files(pattern = 'csv'), 
                  id = 'source_file',
                  col_names = paste('X', 1:n) ## n = column count in source files
                  )

并根据前面所述的行号进行过滤/重新排序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建 Excel SUMIF 函数的 R 版本,可用于测量连续在多个数据集上运行的模型的性能 的相关文章

  • 为什么使用SignTool进行代码签名时需要指定时间戳服务器?

    时间戳是可选参数 所以有人可以解释带时间戳的exe文件和不带时间戳的exe文件之间的区别吗 如果我跳过此选项会发生什么 如果您跳过时间戳选项 那么当您的证书过期时 exe 将不再具有有效的证书 如果您使用时间戳服务器 那么 exe 将始终具
  • Python tkinter:在组合框中使用“文本变量”似乎没用

    使用textvariable在 tkinter 中创建组合框时的属性似乎完全没用 有人可以解释一下目的是什么吗 我查看了 Tcl 文档 它说textvariable用于设置默认值 但看起来在 tkinter 中您只需使用 set方法来做到这
  • Pepper Robot:如何将 Python 地标检测移植到 Choregraphe?

    我正在尝试编写一个小程序 让 Pepper 通过 Choregraphe 检查房间内的地标 用于地标检测的常规 Python 代码工作得很好 但我无法将其移植到 Choregraphe http doc aldebaran com 2 5
  • ASP.NET 入口点?

    刚刚创建了一个空白的 ASP NET Web 应用程序 切入点在哪里 我看到 Default aspx 似乎是调用的默认模板 我猜 Site Master 充当布局文件 Global asax 似乎提供了一些用于事件处理的方法存根 然后是
  • RIMM 流文件格式中各个帧的格式是什么

    我正在尝试从黑莓设备捕获一些视频帧并将其作为图像进行操作 特别是进行条形码解码 我找到了一些示例代码和规范文档 其中演示了如何使用 J2ME MMAPI 类将视频从设备的摄像头流式传输到文件和输出流 流媒体文件采用 RIM 专有的 RIMM
  • 跳过一行GridBagLayout

    我在 JFrame 上使用 GridBagLayout 我希望能够跳过一两行 但将这些行显示为空白 然后在这些行后面有一个按钮 我在文档中找不到任何方法来执行我所描述的操作 有谁知道我可以执行此操作的任何方法吗 发现它比添加空组件干净得多
  • angular-cli:Karma-Webpack 因“没有此类文件或目录”而失败

    我从Tour of Heroes使用标准 Angular systemjs 现在我正在使用angular client它在开发 生产模式下运行顺利 但我无法测试任何东西ng test 以下内容会被吐出 不仅适用于test ts但也为了pol
  • 如何在 SpringDoc OpenAPI 3 中引用文件?

    我有 Spring Boot 项目 我想在其中记录我的 API 这里是正在处理的 Web 服务的示例 ApiResponses value ApiResponse responseCode 200 content Content media
  • 1° 夏令时 Java 和 JS 表现出不同的行为

    假设巴西利亚 GMT 0300 夏令时于 21 10 2012 00 00 00 此时时钟应提前一小时 Java new Date 2012 1900 9 21 0 0 0 Sun Oct 21 01 00 00 BRST 2012 Chr
  • 获取不正确的日期,将时间戳转换为新日期

    我正在尝试将时间戳转换为日期 但得到的日期不正确 我正在开发一个使用 Angular 和 Typescript 的项目 我有这样的时间戳 1451642400 2016年1月1日 和1454320800 2016年2月1日 如果我编码 da
  • 如何通过 jQuery onblur 提交表单

    所以我尝试通过 jQuery onblur 提交表单 即一旦焦点离开密码字段 表单就会通过 jQuery 提交 有类似的问题 但这不是我要找的 我尝试使用 document getElementById 但它不起作用 任何帮助表示赞赏 提前
  • Linux Bash grep 从匹配字符串中提取单词

    我有以特殊字符开头的数字 并以900现在我想提取排除它们之间的文本 我的代码 gt gt cat demo txt asdfsdf 1234900 asdf dfasd asdf 1345900 asdfad wer 678900 asdf
  • 如何从停止的地方开始播放视频

    我正在使用 VideoView 来播放视频 如果我退出应用程序 在返回应用程序 即在 onResume 中 时 它应该从停止的位置播放视频 要获取当前进度 在 onPause 中检查 long progress mVideoView get
  • 尝试访问从资产复制到数据\数据\的数据库中的DatabaseHelper时出现空指针异常

    我有一个数据库助手类 代码如下 这个助手的类任务是将数据库从应用程序附带的资产文件夹复制到我的应用程序的 data data 中 以便我可以使用它 一旦我将数据库放入 data data 我能够 我想添加它并执行 CRUD 操作 并且该数据
  • 如何在 Jetpack Compose 中提供相对大小

    我有一个框布局 我想相对于父框的大小来布局子视图 这可以在 SwiftUI 中使用 Geometry Reader 来实现 如何在 Jetpack Compose 中实现类似的功能 您可以使用BoxWithConstraints代替Box
  • 如何将 Ant 路径转换为文件集?

    我正在编写一个 Ant 脚本来将项目打包到 WAR 文件中 该软件由多个项目组成 它们有自己的源目录 库等 WAR 任务有一个嵌套元素lib我目前正在研究这个问题 我目前有所需库的参考作为Path 包含几个FileSets 我在类路径引用中
  • gwt - 在 RPC 调用中使用 List

    我有一个 RPC 服务 方法如下 public List
  • 在 Android 上使用 pocketsphinx 未检测到关键字

    谁能解释一下如何使用 pocketsphinx 将语音转换为文本 我试试这个 import com example speechtutor SpeechRecognizerRecorder import com example speech
  • 关闭 IPython Notebook 中的自动保存

    我正在寻找一种方法来关闭 iPython 笔记本中的自动保存 我已经通过 Google Stack Overflow 搜索看到了有关如何打开自动保存的参考资料 但我想要相反的内容 关闭自动保存 如果这是可以永久设置的东西而不是在每个笔记本的
  • “保留供任何使用”是什么意思?

    注意 这是一个c questions tagged c问题 虽然我补充说c questions tagged c 2b 2b如果某些 C 专家可以提供 C 使用与 C 不同的措辞的基本原理或历史原因 在 C 标准库规范中 我们有这个规范文本

随机推荐

  • OpenSSL 服务器密码选择

    在 SSL TLS 握手期间 客户端发送受支持的密码套件列表 服务器选择用于对话的密码套件 Windows 有一个密码套件的优先级列表 可通过注册表进行配置 并将选择该列表中客户端支持的第一个套件 使用密码套件标志创建可接受的密码列表后 O
  • 虚拟目录中的 IIS 配置文件

    我有多个网站 它们都具有相同的代码 但应用程序设置不同 我想将我的应用程序设置放在位于虚拟目录中的单独配置文件中 这将使我能够拥有跨所有站点共享的所有代码的单个副本 并且每个站点都有不同的虚拟目录 不幸的是 当我尝试配置它时 IIS 不会处
  • 用于高效日期解析的 FastDateFormat 的替代方案?

    非常了解性能和线程问题SimpleDateFormat 我决定去FastDateFormat 直到我意识到FastDateFormat仅用于格式化 不进行解析 有没有替代方案FastDateFormat 开箱即用 并且比SimpleDate
  • 获取拖动预览的帧

    我正在实施拖放UICollectionView使用 iOS 11 中引入的新 Apple API What I need is to get a frame of drag preview see below red rectangle 我
  • 我们何时应该在 Kotlin 上使用 run、let、apply、also 和 with 的示例

    我希望为每个函数 run let apply with 提供一个很好的示例 我读过了本文 https medium com tpolansk the difference between kotlins functions let appl
  • 确定点是否位于 3D 网格内部的算法

    用于确定点是否位于 3D 网格内部的快速算法是什么 为简单起见 您可以假设网格都是三角形并且没有孔 到目前为止我所知道的是 确定光线是否穿过网格的一种流行方法是计算光线 三角形相交的数量 它必须很快 因为我正在使用它进行触觉医学模拟 所以我
  • 有没有办法从 AppEngine Standard 访问 Google Cloud 元数据服务以进行运行时配置?

    我想访问元数据服务 https cloud google com compute docs storing retrieving metadata来自 App Engine 标准应用程序 我尝试执行 urlfetchhttp metadat
  • 我们什么时候可以在 C++11 lambda 中省略返回类型?

    据我所知know http en cppreference com w cpp language lambda 在标准 C 11 中 不是 C 14 当省略 lambda 的返回类型时 其返回类型推导为 当 lambda 仅包含带有表达式的
  • Cordova Android 升级 - 找不到模块“lodash/object/assign”错误

    我已经使用 gradle 构建了 Cordova 版本 2 9 Android 应用程序 现在我想使用升级 cordovacordova平台更新android命令但始终给我以下错误 找不到模块 lodash object assign 错误
  • 根据文本长度动态改变字体大小

    我需要将用户输入的文本显示到固定大小的 div 中 我想要的是自动调整字体大小 以便文本尽可能填充框 我可能想从最大字体大小开始 虽然文本太大而无法容纳容器 但缩小字体大小直到适合并且字体必须显示为单行 假设你有这个 div style w
  • 使用 PyMUPDF 使用标志提取文本以重点关注粗体/斜体字体

    我正在尝试使用 PyMUPDF 1 18 14 从 PDF 中提取粗体文本元素 我希望这能按照我从文档中了解到的那样起作用flags 4目标为粗体字体 page doc 1 text page get text flags 4 print
  • 在Android中向ImageView添加文本

    我想用一个ImageView以一种奇特的方式显示一些信息 如何将文本添加到ImageView 添加文本到您的ImageView你可以这样做
  • 重命名后以编程方式在编辑器中打开文件

    我正在导出一个文件 在导出时 我正在重命名现有文件并创建一个新文件 如果现有文件在 Eclipse 中打开 它将从中关闭 我必须再次手动打开该文件 如何以编程方式打开重命名后打开编辑器的文件 这应该有帮助 IFile file IEdito
  • 将列值分组在一起

    我有一个像这样的数据框 Class price demand 1 22 8 1 60 7 3 32 14 2 72 9 4 45 20 5 42 25 我想做的是将 1 3 班分组为一个类别 将 4 5 班分组为一个类别 然后我想获得每个类
  • NUnit 中可以自定义过滤器吗?

    是否可以定义一个自定义过滤器 以便 NUnit 只运行特定的测试 我的许多 Nunit 测试都标有自定义属性 BugId 是否可以编写一个过滤器 以便我可以传入一个数字并仅使用该属性和数字运行测试 如果是这样 请显示模型或真实代码 过滤器是
  • 如何将 numpy 数组呈现到 pygame 表面?

    我正在编写一段代码 其中一部分是读取图像源并将其显示在屏幕上以供用户交互 我还需要锐化的图像数据 我使用以下方法读取数据并将其显示在pyGame def image and sharpen array file name read the
  • 如何让 XSL 中的 javascript for 循环中的 less 起作用?

    我正在使用 CDATA 来转义脚本 但在 IE8 的调试器中 我仍然收到此消息 在 for 循环条件中 预期 我假设它仍然认为 在里面 lt CDATA 生成的是结束循环条件 我的 XSL 模板中的原始脚本
  • 通过 Terraform 创建 Azure Windows VM

    在 Azure 中 我尝试使用 Terraform 创建 Windows VM 我之前已经使用 Template json 文件通过 Powershell 完成了此操作 现在我要处理 terraform 我对它完全陌生 所以我搜索了一些在A
  • 是否可以使用 php 或 javascript 获取硬件信息?

    是否可以使用 php 脚本获取硬件详细信息 是否可以通过 php 脚本检查笔式驱动器或其他设备是否连接到电脑 因此 当用户加载网页时 它应该显示 Pendrive 已连接到您的计算机 是否可以 请参阅此链接 它是如何工作的 http lin
  • 创建 Excel SUMIF 函数的 R 版本,可用于测量连续在多个数据集上运行的模型的性能

    首先 这个问题是一个后续问题最近的问题 https stackoverflow com questions 74956321 creating the equivalent of a sumif function in excel 7495