热门标签 | 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


推荐阅读
  • 添加环境光使正方体显示更真实
    本文介绍了如何给正方体添加环境光以使其显示更真实。通过在代码中加入环境光的计算,可以让物体的背光部分不再完全黑色,从而增加物体的真实感。代码中使用了顶点属性、光照颜色、光照方向、环境光等参数来计算物体的漫反射,并将计算结果与顶点颜色相乘得到最终的颜色。通过调整环境光的参数,可以达到不同的光照效果。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • Thisworkcameoutofthediscussioninhttps://github.com/typesafehub/config/issues/272 ... [详细]
  • [转载]从零开始学习OpenGL ES之四 – 光效
    继续我们的iPhoneOpenGLES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可 ... [详细]
  • ;(function(window){***[dateDiff算时间差]*@param{[typeNumber]}hisTime[历史时间戳, ... [详细]
  • Non-ASCIIhelponitsownisOK: ... [详细]
  • 详解 Python 的二元算术运算,为什么说减法只是语法糖?[Python常见问题]
    原题|UnravellingbinaryarithmeticoperationsinPython作者|BrettCannon译者|豌豆花下猫(“Python猫 ... [详细]
  • QuestionThereareatotalofncoursesyouhavetotake,labeledfrom0ton-1.Somecoursesmayhaveprerequi ... [详细]
  • 先记住几个专用名词,如下:Workspace:工作区IndexStage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库#在当前目录新建一个G ... [详细]
  • Answer:Theterm“backslash”isonofthemostincorrectlyusedtermsincomputing.People ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 用户视图(查看运行状态或其他参数)系统视图(配置设备的系统参数)system-viewEntersystemview,returnuservi ... [详细]
  • 基于词向量计算文本相似度1.测试数据:链接:https:pan.baidu.coms1fXJjcujAmAwTfsuTg2CbWA提取码:f4vx2.实验代码:imp ... [详细]
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社区 版权所有