如何使用变量名称通过 ddply 引用数据框列?

2024-04-23

我正在尝试编写一个函数,该函数将保存时间序列数据的数据框的名称和该数据框中的列的名称作为参数。该函数对该数据执行各种操作,其中之一是在列中添加每年的运行总计。我正在使用plyr。

当我直接将列名与 ddply 和 cumsum 一起使用时,没有任何问题:

require(plyr)
df <- data.frame(date = seq(as.Date("2007/1/1"),
                     by = "month",
                     length.out = 60),
                 sales = runif(60, min = 700, max = 1200))

df$year <- as.numeric(format(as.Date(df$date), format="%Y"))
df <- ddply(df, .(year), transform,
            cum_sales = (cumsum(as.numeric(sales))))

这一切都很好,但最终目标是能够将列名称传递给此函数。当我尝试使用变量代替列名时,它无法按我的预期工作:

mycol <- "sales"
df[mycol]

df <- ddply(df, .(year), transform,
            cum_value2 = cumsum(as.numeric(df[mycol])))

我以为我知道如何按名称访问列。这让我很担心,因为这表明我未能理解有关索引和提取的基本知识。我本以为以这种方式按名称引用列将是一种常见的需求。

我有两个问题。

  1. 我做错了什么,即我误解了什么?
  2. 考虑到函数不会事先知道列的名称,是否有更好的方法来解决这个问题?

TIA


ddply 的参数是在原始数据帧分割成的每个部分的上下文中计算的表达式。你的 df[myval] 寻址整个数据帧,所以你不能按原样传递它(顺便说一句,为什么你需要那些 as.numeric(as.character()) 东西 - 它们完全没用)。

最简单的方法是编写自己的函数,该函数将执行内部的所有操作并向下传递列名称,例如

df <- ddply(df, 
            .(year), 
            .fun = function(x, colname) transform(x, cum_sales = cumsum(x[,colname])), 
            colname = "sales")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用变量名称通过 ddply 引用数据框列? 的相关文章

  • Django 中的 Rpy2 错误 - 未为“”类型的对象定义转换“py2rpy”

    我以前从未使用过 R 并且正在尝试使用 rpy2 从 python 调用 R 函数 它可以在独立的 python 终端上运行 但不能在 Django 中运行 但rpy2似乎无法将python字符串转换为r对象 我正在使用同事提供的自定义库
  • 访问 R 工作区中的数据[重复]

    这个问题在这里已经有答案了 我是自学 R 的 可能有一些非常基本的东西我可能不熟悉 如果是这样我道歉 我正在尝试访问外部来源提供给我的数据 它作为一个工作空间出现 我的流程如下 gt ls 1 2003OHT HR gt attach 20
  • R:如何找到向量的模式[重复]

    这个问题在这里已经有答案了 下面是我的data frame我想知道每个内存类别 1 到 8 的模式是什么 gt dput d structure list MEMORY1 c 5 5 7 1 5 6 4 5 4 5 5 4 1 5 5 2
  • stat_function 从函数生成平线

    我有以下代码 library ggplot2 f lt function x if x gt 2 1 x 0 3 else 0 graph lt ggplot data frame x c 0 10 aes x graph lt graph
  • 将不同的 grViz 组合成一个图

    我想结合不同的DiagrammeR绘制成一个图形 生成的图如下例所示 library DiagrammeR pDia lt grViz digraph boxes and circles a graph statement graph ov
  • 在 R 中导入 csv 文件时如何保留前导零?

    当我写一个 csv来自 R 的文件 其中我的组名称以前导零值开头 前导零被保留 但是当我导入 csv前导零被删除 组名称被转换为整数 当我导入一个组时 如何保留组名称中的前导零 csvR 中的文件 Example df lt data fr
  • 如何使用autoconf重新生成配置文件?

    我使用 autoconf 重新生成配置文件 它有效 但是当我执行生成的配置文件时 configure 有一些错误消息 例如 configure line 3713 syntax error near unexpected token bla
  • R 错误:无法更改锁定绑定的值

    我试图估计无限数字流的平均值和标准差 当我运行代码时 出现错误消息 无法更改锁定绑定的值 我做了一些研究 发现这个错误与我使用全局变量有关 但我无法弄清楚 任何帮助将非常感激 在此先感谢您的帮助 define global variable
  • RStudio 不会通过 rPython 调用加载所有 Python 模块

    我从 Bash 和 RStudio 中运行相同的脚本时出现一些意外行为 请考虑以下事项 我有一个文件夹 rpython 包含两个脚本 test1 R library rPython setwd rpython python load tes
  • zsh:未找到命令:使用 Big Sur Mac 的终端上的 R

    我从官方 cran 网站安装了 R 我可以从 Rstudio 运行 R 但是当我尝试从终端使用 R 时 我得到以下结果 base ege Eges MBP R zsh command not found R base ege Eges MB
  • 更改 pander 中的默认对齐方式 (pandoc.table)

    我目前正在切换到pander对于我的大部分时间knitr markdown格式化 因为它提供了如此出色的pandoc支持 我不太满意的一件事是默认的居中对齐 营销人员可能会喜欢它 但对于技术报告来说这是一个可怕的事情 使用的最佳选择Hmis
  • 使用 ggplot 构面时增加闪亮的绘图大小

    有没有办法增加绘图窗口的大小shiny取决于在一个中使用的面的数量ggplot图 也许使用垂直滚动 例如 使用下面的示例 当输入为 A 有三个方面 情节看起来不错 当选项 B 选择绘图数量会增加 但绘图窗口保持相同大小 导致绘图太小 是否有
  • R 中的龙卷风图

    我正在尝试在 R 中绘制龙卷风图 又名敏感性图 目标是可视化某些变量增加 10 和减少 10 的效果 到目前为止我已经得到这个结果 这是我正在使用的代码 Tornado plot data lt matrix c 0 02 0 02 0 0
  • 使用 pkg:sjPlot 函数创建一个生成部分斜体单元格的数据框

    我正在尝试创建一个简单的数据表 其中 Coral taxon 列中的属名称为斜体 而 spp 列中的属名称为斜体 属名后面的部分不大写 我尝试使用 expression 函数对 Coral taxon 的每一行进行编码 但没有成功 sum
  • R中整数类和数字类有什么区别

    我想先说我是一个绝对的编程初学者 所以请原谅这个问题是多么基本 我试图更好地理解 R 中的 原子 类 也许这适用于一般编程中的类 我理解字符 逻辑和复杂数据类之间的区别 但我正在努力寻找数字类和整数类之间的根本区别 假设我有一个简单的向量x
  • 如何在 R 中绘制一列与其余列的关系图

    我有一个数据集 其中 1 是时间 接下来的 14 个是幅度 我想在一张图表上散布所有大小与时间的关系 其中每个不同的列都是网格化的 分层在另一个之上 我想使用原始数据来制作这些图表 并单独制作它们 但只想执行此过程一次 数据集A 唯一的自变
  • 在 igraph 中为社区分配颜色

    我在 igraph 中使用 fastgreedy community 检测算法在 R 中生成社区 代码返回 12 个社区 但是在绘图时很难识别它们 因为它返回的图的颜色数量有限 我怎样才能用十二种不同的颜色绘制这个图表 l2 lt layo
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor
  • 无法部署 ShinyApp:readTableHeader 在“raw”上发现不完整的最后一行(使用默认值:en_US)

    我已经拼命尝试部署我的闪亮应用程序大约一周了 但不幸的是我无法停止收到以下消息 Warning message Error detecting locale Error in read table file file header head
  • 通过使用 navbarPanel() 并隐藏导航栏构建多页闪亮应用程序用户端(在 ui.R 中)?

    我想构建一个多页闪亮应用程序 我可以在其中控制用户可以看到哪个页面 迪安 阿塔利确实这个演示应用程序中有类似的东西 https github com daattali advanced shiny tree master multiple

随机推荐

  • Android 中的自定义键盘视图

    我正在开发一个自定义 Android 键盘 我开始开发我的键盘 基于this http code tutsplus com tutorials create a custom keyboard on android cms 22615教程
  • 对heroku postgresql DB的访问只能仅限于它的heroku应用程序吗?

    由于安全顾问的建议 我最近将一个应用程序从 heroku 迁移到 amazon ec2 然而 他对 Heroku 的了解并不深 疑问仍然存在 对 Heroku PostgreSQL 数据库的访问是否可以限制为只能由应用程序访问 您会推荐 H
  • 在 Windows Server 2003 中将控制台应用程序安装为 Windows 服务

    这可能是一个基本问题 所以提前道歉 我有一个控制台应用程序 我想在 Windows Server 2003 上测试它 我使用 4 0 框架在 C 中以发布模式构建了该应用程序 并将 bin 文件夹的内容粘贴到 windows server
  • 在 Objective-C 中以编程方式创建 .pem 文件?

    我正在尝试使用 iPhone 应用程序中的 Objective C 和 OpenSSL 库以编程方式从证书签名请求创建 PEM 文件 我按照 Adria Navarro 对这个问题的回答生成了 CSR 类型为 X509 REQ 使用钥匙串存
  • 从 Java / C# 角度理解 C++ 编译器

    我是一名经验丰富的 Java C 程序员 最近开始学习 C 问题是 我无法理解如何构建各种头文件和代码文件 这似乎主要是由于我对编译器如何将所有内容链接在一起缺乏了解 我尝试阅读一些教科书 但我的先入之见受到我的 Java 和 C 知识的影
  • 使用 AVPlayer 播放流媒体视频

    如何播放流媒体视频AVPlayer import Cocoa import AVKit class StreamViewController NSViewController var videoPlayer AVPlayer IBOutle
  • maven中这两个设置一样吗?

    我想限制maven仅使用私有 非公共maven存储库 这两个设置具有相同的效果吗 1 settings xml中设置镜像
  • 使用jquery mobile在页面之间传递参数

    jquery mobile 中页面之间传递参数的正确方法是什么 在jquery mobile的Q A中 有一些插件的建议 是强制性的吗 请告诉我正确的方法 没有一个具体的答案 我必须为页面中的所有链接传递参数 http view jquer
  • Mercurial .hgrc 文件

    默认情况下 在 Windows XP 上 Mercurial 将 hgrc 文件存储在 好吧 就我而言 c Documents and Settings srooks 我如何更改该位置 并让它在其中查找 hgrc 文件 例如 c Confi
  • 在哪里可以找到 Hyperledger Fabric peer 命令可能的环境变量?

    配置对等节点运行时 示例 docker compose 文件中包含许多环境变量 有什么地方可以找到它们的全部记录吗 e g environment CORE VM ENDPOINT unix host var run docker sock
  • 如何在 Dockerfile 中添加大型 HTTP 文件并将其从镜像层中排除?

    Our Nexus服务器 http www sonatype com nexus product overview为我们的 Java 项目提供构建工件 包括其安装程序 那个安装程序是真的很大 gt 1GB 我想检索并使用它Dockerfil
  • Matplotlib scatter():大小、标记形状的默认值

    有没有办法设置default标记尺寸 s matplotlib 的参数plt scatter 或者同样设置标记的形状 mpl rcParams keys 有线图的设置 例如 import matplotlib as mpl mpl rcPa
  • 如何在 H2 中创建过程

    这似乎与具有相同标题的其他问题重复 但实际上并非如此 我们的业务逻辑主要作为 DB2 存储过程来实现 我看到 H2 有一个 DB2 兼容模式 很好 我们如何使用 H2 通过这些程序进行内存单元测试 不幸的是 H2 似乎缺少 CREATE P
  • Android中的适配器应该是静态内部类还是非静态内部类

    我在 Activity 中有一个 ListView 并且正在为 ListView 设置自定义适配器 我的适配器类应该是 private static class MyAdapter extends ArrayAdapter or priva
  • golang:无法从内存不足崩溃中恢复

    在某些情况下 调用append 会触发内存不足恐慌 并且append 本身似乎不会返回nil 我怎样才能避免这种恐慌情况并向我的用户显示 资源暂时不可用 此致 你不能 如果运行时无法为追加分配内存 则可能无法恢复或向用户传达 资源暂时不可用
  • Lua 中的内联条件(a == b ? "yes" : "no")?

    无论如何 Lua 中可以使用内联条件吗 Such as print blah a true blah nahblah Sure print blah a and blah or nahblah
  • 如何在 Mapbox 4.1 中添加自己的图块

    我有一个图块来源作为网址 并希望将它们添加到我的地图中 我能够做到这一点谷歌地图 and OSMDroid 但我不知道如何使用Mapbox 我的网址格式如下 http mysource x y z 我已经看到了针对网络的解决方案 但我没有找
  • 所有 iPad 和 iPad Pro 的视图之间的间距是否规则/规则?

    我最近遇到了不同 iPad 之间常规 常规尺寸类别的差异 这是我的相关问题所有 iPad 包括 iPad pro 的常规 常规头寸大小限制 https stackoverflow com questions 33958858 regular
  • 从 Angular2 服务返回一个空的 Observable

    我正在构建一个 Angular 2 应用程序 它使用服务来收集数据 该服务确实包含以下逻辑 CORE COMPONENTS import Injectable from angular core import Http Response f
  • 如何使用变量名称通过 ddply 引用数据框列?

    我正在尝试编写一个函数 该函数将保存时间序列数据的数据框的名称和该数据框中的列的名称作为参数 该函数对该数据执行各种操作 其中之一是在列中添加每年的运行总计 我正在使用plyr 当我直接将列名与 ddply 和 cumsum 一起使用时 没