使用plyr
包:
library(plyr)
ddply(df, "group", transform, max = max(value), min = min(value))
# group value max min
# 1 a 1 3 1
# 2 a 3 3 1
# 3 b 2 2 2
# 4 b 2 2 2
使用data.table
包:
library(data.table)
setDT(df)[, max := max(value), by = group][, min := min(value), by = group]
# group value max min
# 1: a 1 3 1
# 2: a 3 3 1
# 3: b 2 2 2
# 4: b 2 2 2
使用merge
和aggregate
基礎R溶液:
merge(df, setNames(aggregate(value ~ group, data = df, range),c("group","range")),
by = "group", suffixes = c("",""))
# group value range.1 range.2
# 1 a 1 1 3
# 2 a 3 1 3
# 3 b 2 2 2
# 4 b 2 2 2
注:後者溶液的結構將是有點棘手。使用時請謹慎。
數據:
df <- structure(list(group = structure(c(1L, 1L, 2L, 2L), .Label = c("a",
"b"), class = "factor"), value = c(1L, 3L, 2L, 2L)), .Names = c("group",
"value"), class = "data.frame", row.names = c(NA, -4L))
'DF $最大= AVE(DF $值,DF $基,FUN =最大值); df $ min = ave(df $ value,df $ group,FUN = min)' –
@Henrik我認爲你在結束問題時有點苛刻,因爲重複。不一定是這個,但今天我跑到另外兩個帖子,你把它們標記爲模糊,我不太確定它們是否是這些線程的重複。當然你是金獾;) – Masoud
@Masoud感謝您的反饋!如果您願意,請隨時[重新投票](https://meta.stackexchange.com/questions/36415/how-do-you-reopen-a-closed-question)。 (我剛剛檢查了我最近遇到的十個問題 - 迄今爲止沒有重新投票,這可能表明SO同行同意我選擇關閉以及選擇重複目標)。 – Henrik