当前位置: 首页 > 知识库问答 >
问题:

根据匹配的列减去列对

许丁雷
2023-03-14

我要提前道歉——我知道这个问题可能已经在其他地方得到了解答,但是我似乎无法找到我需要的答案,也无法设法让我找到的其他代码适应我的需要。

我有一个数据框:

FILE | TECHNIQUE | COUNT
------------------------
A    | ONE       | 10
A    | TWO       | 25
B    | ONE       |  5
B    | TWO       | 30
C    | ONE       | 30
C    | TWO       | 50

我想生成一个一个和两个之间COUNT值之差的数据帧,每个FILE都有一行,即。

FILE | DIFFERENCE
-----------------
A    |   15
B    |   25
C    |   20

我确信我应该能够相当容易地使用基础R或Plyr做到这一点,但我有点卡住了。任何人都可以建议一个好方法来做到这一点,也许在Plyr上有很好的教程,可能会帮助我解决将来的类似问题?

谢谢

共有1个答案

楚羽
2023-03-14

在base中使用< code>aggregate:

> aggregate(.~FILE, data= DF[, -2], FUN=diff)
  FILE COUNT
1    A    15
2    B    25
3    C    20

在plyr中使用ddply

> ddply(DF[,-2], .(FILE), summarize, DIFFERENCE=diff(COUNT))
  FILE DIFFERENCE
1    A         15
2    B         25
3    C         20

使用数据。表

> # library(data.table)
> DT <- data.table(DF)
> DT[, diff(COUNT), by=FILE]
   FILE V1
1:    A 15
2:    B 25
3:    C 20

with by

> with(DF, by(COUNT, FILE, diff))
FILE: A
[1] 15
----------------------------------------------------------------------------- 
FILE: B
[1] 25
----------------------------------------------------------------------------- 
FILE: C
[1] 20

使用t应用

> tapply(DF$COUNT, DF$FILE, diff)
 A  B  C 
15 25 20 

doBy包中的< code>summaryBy

> # library(doBy)
> summaryBy(COUNT~FILE, FUN=diff, data=DF)
  FILE COUNT.diff
1    A         15
2    B         25
3    C         20

更新百分比:

> aggregate(.~FILE, data= DF[, -2], function(x) (x[1]/x[2])*100)
  FILE    COUNT
1    A 40.00000
2    B 16.66667
3    C 60.00000

 类似资料:
  • 问题内容: 我的df如下所示: 我想从每个国家的Val1中减去Val10,所以输出如下: 到目前为止,我已经: runDeltas导致此错误: 解决此问题的正确方法是什么? 问题答案: 给定以下数据框: 它归结为一个简单的广播操作):

  • 本文向大家介绍根据MySQL中其他两个列的值来匹配列的值,包括了根据MySQL中其他两个列的值来匹配列的值的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是根据ID和MatchID显示FirstName的查询- 这将产生以下输出-

  • 我有以下表在PostgreSQL 11.0 我想过滤上表,这样,如果col2和col4相等,只应选择此匹配项,并排除下面两行。当col2和col4不相等时,应该保留col2=col3的行。 所需的输出是: 我正在尝试下面的问题,到目前为止没有成功。 但这将包括已经有匹配的行,我希望在最终输出中排除这些行。

  • 问题内容: 我需要能够对两个带注释的列进行汇总 所以我想做这样的事情: 接着: 有谁知道如何完成上述工作? 问题答案: 其实, 从Django 1.8开始 就可以正常工作了。 此外,您还可以按表达式排序,这意味着您可以使用: 甚至只是:

  • 问题内容: 在Python中,如何减去两个非唯一的无序列表?假设我们有和我想这样做,并有成为或顺序无关紧要给我。如果a在b中不包含所有元素,则应该抛出异常。 请注意,这与套装不同! 我对找到a和b中的元素集的差异不感兴趣,而对a和b中元素的实际集合之间的差异感兴趣。 我可以使用for循环来执行此操作,在a中查找b的第一个元素,然后从b和a中删除该元素,依此类推。但这对我没有吸引力,这会非常低效(按

  • 描述 (Description) LESS由列表函数组成,列表函数用于指定列表的长度和列表中值的位置。 下表列出了LESS中使用的List函数 - Sr.No. 功能说明 1 Length 它将以逗号或空格分隔的值列表作为参数。 2 Extract 它将返回列表中指定位置的值。