我有一个名为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
的更新值。
我真正想要的是问如何将这一行代码应用到表中,以便用总计数的这个新值更新表。
答案 0 :(得分:1)
您需要将其存储在变量中,而不是整个表中。尝试这样做:
e.table[e.table$Entity = "Total count"]$Equity <- e.table[e.table$Entity != "Total count", sum(e.table$Equity)]
答案 1 :(得分:1)
根据您说“数据表”并使用运算符:=
的事实,我了解到您正在使用软件包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