创建 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 版本,可用于测量连续在多个数据集上运行的模型的性能 的相关文章

  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话
  • Antlr 解析器运算符优先级

    考虑以下语法 我对运算符优先级有疑问 例如 res 2 a b有一个类似的解析树res 2 a b 我知道问题出在哪里 但我没有想到没有相互左递归的 漂亮 解决方案 你能帮我一点忙吗 该语法与自定义访问者一起使用 grammar Math
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教
  • NSArrayController 无需将大型数据集加载到数组中

    我想使用 NSArrayController 向 NSTableView 提供数据 我面临的问题是我不想将所有数据预先加载到数组中 然后使用数组控制器setContent 方法 我的数据模型是一个管理数百万条记录的大型现有代码库 它包含有效
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 如何在 JFreeChart 中设置多个系列的线条粗细?

    我创建了很多图表 在他们每个人中我都需要打电话 renderer setSeriesStroke i new BasicStroke 2 0f 对于每个系列 renderer is chart getXYPlot getRenderer 我
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈
  • 禁用允许文本选择的

    残疾人可以吗
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • 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