gpt4 book ai didi

r - 根据匹配列减去列对

转载 作者:行者123 更新时间:2023-12-04 07:03:31 26 4
gpt4 key购买 nike

我会提前道歉 - 我知道这可能在其他地方得到了回答,但我似乎无法找到我需要的答案,并且无法调整我找到的其他代码以满足我的需求。

我有一个数据框:

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

我想生成一个和两个之间的 COUNT 值差异的数据框,每个文件都有一行,即
FILE | DIFFERENCE
-----------------
A | 15
B | 25
C | 20

我确信我应该能够使用基本的 R 或 Plyr 轻松地做到这一点,但我有点卡住了。任何人都可以提出一个很好的方法来做到这一点,也许在 Plyr 上有很好的教程可以帮助我在 future 解决类似的问题?

谢谢

最佳答案

使用 aggregate在基地:

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

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

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

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

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

summaryBy来自 doBy 包
> # 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

关于r - 根据匹配列减去列对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com