r - r 如何将函数应用于数据表
问题描述
我有一个名为的数据表e.table
,其中包含一个名为的列Entity
和另一个名为的列Equity
。该列中的一行 Entity
名为total count
,它对Equity
其他行的所有值求和。我写了这行来做这个计算:
e.table[e.table$Entity != "Total count", sum(e.table$Equity)]
如果我打印它,它会给我我想要的,但如果我这样做:
e.table <- e.table[e.table$Entity != "Total count", sum(e.table$Equity)]
或这个:
e.table[, Equity :=vapply(Equity, e.talbe[e.table$Entity != "Total count", sum(e.table$Equity)]]
我没有得到Total count
.
我真正想要的是问我如何将这行代码应用到表中,以便用这个新的总计数值更新表。
解决方案
从您说“数据表”并使用运算符这一事实来看:=
,我了解您正在使用 package data.table
。
假设您的数据如下所示:
library(data.table)
e.table <- data.table(Entity=c("a", "b", "c", "Total count"), Equity=c(1, 3, 6, 10))
e.table
# Entity Equity
# 1: a 1
# 2: b 3
# 3: c 6
# 4: Total count 10
并且我们还假设在某个时候来自外部世界的某个人添加了一行而不更新总数,它变成了这样:
e.table <- data.table(Entity=c("a", "b", "c", "d", "Total count"), Equity=c(1, 3, 6, 10, 10))
e.table
# Entity Equity
# 1: a 1
# 2: b 3
# 3: c 6
# 4: d 10
# 5: Total count 10
并且您正在寻找更新此Total count
值的方法。
这应该可以解决问题:
e.table[Entity=="Total count", Equity := e.table[Entity!="Total count", sum(Equity)]]
e.table
# Entity Equity
# 1: a 1
# 2: b 3
# 3: c 6
# 4: d 10
# 5: Total count 20
推荐阅读
- swift - 如何通过设置 UILabel 左上角的位置在 Swift 中定位 UILabel?
- javascript - 将给定单词的索引查找到短语中
- java - 为什么错误处理程序不处理我的错误?
- ruby - 有没有办法向 Thor 类添加钩子以便在所有命令之前/之后运行代码?
- sql - SQL Server 在更新语句中排序
- r - 具有自适应数据框的闪亮应用程序,用于更改点分析
- vba - 有没有办法为 WithEvents 使用后期绑定?
- php - 减少laravel中的列值但不是负值
- ios - 如何在IOS模拟器Xcode中测试PushNotification
- cmd - 通过 CMD 重命名文件保留最后 10 个字符并删除所有起始字符