热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

根据其他列获取data.table行之间的差异

如何解决《根据其他列获取data.table行之间的差异》经验,为你挑选了1个好方法。

我有一个数据框data如下。如何根据该类获取类c1c2列的值之间的差异v1v3v4有效地使用data.table它们index

data <- data.frame(index = c("A", "B", "C", "D", "C", "A", "D", "B"),
                   class = c(rep("c1", 4), rep("c2", 4)),
                   v1 = c(21,85,74,96,55,77,21,34),
                   v3 = c(77,41,91,85,22,74,36,41),
                   v4 = c(41,58,24,36,84,24,74,11))

setDT(data)
data[, index := as.factor(index)]
data[, class := as.factor(class)]

   index class v1 v3 v4
1:     A    c1 21 77 41
2:     B    c1 85 41 58
3:     C    c1 74 91 24
4:     D    c1 96 85 36
5:     C    c2 55 22 84
6:     A    c2 77 74 24
7:     D    c2 21 36 74
8:     B    c2 34 41 11

所需的输出是

out <- data.frame(index = data[1:4]$index,
           v1 = data[1:4]$v1 - data[5:8]$v1,
           v3 = data[1:4]$v3 - data[5:8]$v3,
           v4= data[1:4]$v4 - data[5:8]$v4)
out
  index  v1 v3  v4
1     A -56  3  17
2     B  51  0  47
3     C  19 69 -60
4     D  75 49 -38

mtoto.. 5

您可以将diff()每个索引的功能应用于数字列:

data[,lapply(.SD,diff),by=index,.SDcols = v1:v4]
#   index  v1  v3  v4
#1:     A  56  -3 -17
#2:     B -51   0 -47
#3:     C -19 -69  60
#4:     D -75 -49  38

要翻转符号(如预期的输出一样),您可以简单地使用-.SD代替.SD



1> mtoto..:

您可以将diff()每个索引的功能应用于数字列:

data[,lapply(.SD,diff),by=index,.SDcols = v1:v4]
#   index  v1  v3  v4
#1:     A  56  -3 -17
#2:     B -51   0 -47
#3:     C -19 -69  60
#4:     D -75 -49  38

要翻转符号(如预期的输出一样),您可以简单地使用-.SD代替.SD


推荐阅读
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
  • moment 国际化设置中文语言 (全局) 及使用示例 ... [详细]
  • 本文介绍Linux中的Diff命令,该命令用于逐行对比两个文本文件,展示它们之间的差异。通过系统性检查,它能有效标识出文件间所有不同的行,无需事先对文件进行排序。 ... [详细]
  • 基于结构相似性的HOPC算法:多模态遥感影像配准方法及Matlab实现
    本文介绍了一种基于结构相似性的多模态遥感影像配准方法——HOPC算法,该算法通过相位一致性模型构建几何结构特征描述符,能够有效应对多模态影像间的非线性辐射差异。文章详细阐述了HOPC算法的原理、实验结果及其在多种遥感影像中的应用,并提供了相应的Matlab代码。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 本文介绍 SQL Server 的基本概念和操作,涵盖系统数据库、常用数据类型、表的创建及增删改查等基础操作。通过实例帮助读者快速上手 SQL Server 数据库管理。 ... [详细]
  • 本文介绍在 Red Hat Linux 系统中如何安全地永久修改网卡的MAC地址。如果直接修改配置文件中的HWADDR字段,可能会导致系统启动时出现错误。了解ifup脚本的工作机制有助于避免这些问题。 ... [详细]
  • 本文详细介绍了Hive中用于日期和字符串相互转换的多种函数,包括从时间戳到日期格式的转换、日期到时间戳的转换,以及如何处理不同格式的日期字符串。通过这些函数,用户可以轻松实现日期和字符串之间的灵活转换,满足数据处理中的各种需求。 ... [详细]
  • 本文介绍了如何利用Python的高精度计算库mpmath实现π的100种不同计算方法。通过设置更高的精度和优化的数学函数,这些方法能够提供极其精确的结果。 ... [详细]
  • “Hand in glove”这一短语源自手套与手的紧密贴合,形容两者之间几乎无缝隙的配合。那么,“hand in glove”究竟在比喻什么关系呢?本文将详细探讨其含义及应用。 ... [详细]
  • Python中HOG图像特征提取与应用
    本文介绍如何在Python中使用HOG(Histogram of Oriented Gradients)算法进行图像特征提取,探讨其在目标检测中的应用,并详细解释实现步骤。 ... [详细]
  • 版本控制工具——Git常用操作(下)
    本文由云+社区发表作者:工程师小熊摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复 ... [详细]
  • JavaScript中的数组是数据集合的核心结构之一,内置了多种实用的方法。掌握这些方法不仅能提高开发效率,还能显著提升代码的质量和可读性。本文将详细介绍数组的创建方式及常见操作方法。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
author-avatar
starry-night--_848
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有