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