簡體   English   中英

R:基於特定條件聚合數據幀

[英]R: aggregate a data frame based on certain condition

我有一個數據框。 我想基於另一個列表聚合它的一列。

df<-data.frame(X=c("a", "b", "c", "d"), Y=c(0.5, 0.4, 0.01, 0.09))
X     Y
a     0.5
b     0.4
c     0.01
d     0.09

l<-c("a", "c", "d")

l是需要組合在一起的列表。 所以,在這里我想把df$X所有元素分組在l中。

My desired result is:
X     Y
a'    0.6
b     0.4

有關如何做到這一點的任何想法?

謝謝。

我們可以“暫時”將相關的X值更改為相同的分組變量,然后進行匯總。 在這里我隨意選擇l[1] ,這也恰好是"a"

aggregate(Y ~ X, within(df, X <- replace(X, X %in% l, l[1])), sum)
#   X   Y
# 1 a 0.6
# 2 b 0.4

aggregate()調用中使用within()一個好處是原始df將保持不變。

使用data.table的選項

library(data.table)
df1 <- copy(df)
setkey(setDT(df1), X)[l, X:='a'][, list(Y=sum(Y)), X]
#  X   Y
#1: a 0.6
#2: b 0.4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM