0
假设我有数据帧:的R - 基于三个条件与汇总值数据帧新列
df <- data.frame(Year = rep(1:3, each = 5)
, Terminal = c(1,1,1,1,1,1,2,2,2,2,2,2,2,1,2)
, day = c (1,1,1,1,1,1,2,2,2,2,2,2,2,1,2)
, Capacity = sample(1:15))
,并试图获得columnb“X”,也就是能力的同年的总和,天和终端。
原DF
结果:
我用下面的代码做了计算:
aggregate(Capacity ~ Terminal + Year + day , data=df, FUN=sum)
和
as.data.table(df)[, sum(Capacity), by = .(Terminal, Year, day)]
但是当我尝试创建新列时,它只打印1或2值而不是总和。它也给了下面的交战。我对X的代码是df["X"] <- aggregate(Capacity ~ Terminal + Year + day , data=df, FUN=sum)
警告消息: 在[<-.data.frame
(*tmp*
, “X”,值=列表(终端= C(1,1,: 提供4个变量,以取代1个变量
感谢akrun,最后的代码工作,由于某种原因发生变异不会创建列。它打印DF,它确实计算你。任何想法为什么,我尝试了一个简单的例子,它的工作原理:'df < - data.frame(“A”= 1:6, “B”= 7:12) df < - mutate(df,C = A + B )' – Kalenji
@Kalenji您需要将输出分配回原始数据集,即'df <- df %>%group_by(..' – akrun
谢谢,它的工作原理,任何人重新使用它的完整代码。 ,天,终端)%>% 变异(X =总和(容量))' – Kalenji