簡體   English   中英

如何將R中的函數應用於由另一列分組的數據幀的某些列?

[英]How do I apply a function in R to certain columns of a data frame grouped by another column?

我一直在尋找的幫助頁面tapplyby ,我不知道他們是這樣做的正確的工具。 例如,如果我有一個數據框,其中的列為Name,Value1,Value2並且我想應用一個函數,則將function f(x,y) { do_something }應用於按Name分組的Value1Value2並得到一個數據框與列Name,f(Value1,Value2)我應該怎么做?

我可以輕而易舉地在這樣的簡單情況下工作:

tapply(df$Name, df$value1, mean)

但是如果我的函數也將df$value2作為輸入怎么辦? 是不是這么簡單mean 換句話說,我想要做的是偽符號:

tapply(df$Name, c(df$value1,df$value2), function f(x,y) { x+y+bla...})

盡管不會返回data.frame但是by可以完成工作。

by(df, df$Name, function(X) f(X$Value1, X$Value2))

data.table最好針對這種情況設置:

install.packages("data.table")
library(data.table)
dt = data.table(df)
dt[,f(Value1, Value2),by=Name]

將完全返回您要查找的內容。

還檢查出plyr 例如

require(plyr)
ddply(mtcars, .variables="cyl", .fun=mutate,
      meaningless_number = mean(mpg) + disp)

會給你回一個數據幀就像mtcars ,與添加的列meaningless_number這是平均mpgcyl加上個人disp 使用.fun = mutate添加列,使用.fun = mutate .fun = summarize查看摘要,以及其他用於其他目的的功能。

對於一般的*應用知識, 此問題的答案非常有用。 我還發現此答案是一個很棒的plyr教程。

暫無
暫無

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

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