【问题标题】:Split data.frame by variable and apply function referring to concrete row按变量拆分 data.frame 并引用具体行的应用函数
【发布时间】:2016-04-15 11:33:30
【问题描述】:

我需要将data.frame 拆分为某个变量,并计算每行的值与其他指定行的值之间的差异。

在下面的示例中,我将df 拆分为v1。然后为v3 的每一行计算实际值与v3[v2 == "C"] 之间的差异。

v1 <- rep(1:4,each = 3)
v2 <- rep(c("A","B","C"),4)
v3 <- rep(1:5,3)[1:12]
res <- c(-2,-1,0,3,4,0,-2,-1,0,3,-1,0)
df <- data.frame(v1,v2,v3,res)

df
   v1 v2 v3 res
1   1  A  1  -2
2   1  B  2  -1
3   1  C  3   0
4   2  A  4   3
5   2  B  5   4
6   2  C  1   0
7   3  A  2  -2
8   3  B  3  -1
9   3  C  4   0
10  4  A  5   3
11  4  B  1  -1
12  4  C  2   0

如果可能的话,我更喜欢plyrdata.table

【问题讨论】:

  • dplyr 替代:df %&gt;% group_by(v1) %&gt;% mutate(res = v3 - v3[v2=='C'])

标签: r dataframe data.table plyr


【解决方案1】:

这是一个数据表解决方案:

library(data.table)
setDT(df)
df[, new := v3 - v3[v2=="C"], by = "v1"]

【讨论】:

    猜你喜欢
    • 2011-08-12
    • 2013-01-27
    • 1970-01-01
    • 2011-01-22
    • 2012-07-09
    • 2013-09-25
    • 1970-01-01
    • 2016-06-20
    • 1970-01-01
    相关资源
    最近更新 更多