R 对每个变量使用不同的函数按组折叠数据帧

R 对每个变量使用不同的函数按组折叠数据帧,r,dataframe,collapse,data-manipulation,data-management,R,Dataframe,Collapse,Data Manipulation,Data Management,定义 我的数据没有因子,因此我将因子转换为字符: > df V1 V2 V3 V4 1 egg 1 20 a 2 egg 2 30 a 3 jap 3 50 b 4 jap 1 60 b plyr套餐将帮助您: > df.collapse V1 V2 V3 V4 1 egg 2 25 a 2 jap 3 55 b 因为R没有模式函数(可能),所以我放置了其他函数。 但实现模式功能很容易。plyr软件包将帮助您: > df.collapse

定义

我的数据没有因子,因此我将因子转换为字符:

> df
   V1 V2 V3 V4
1 egg  1 20  a
2 egg  2 30  a
3 jap  3 50  b
4 jap  1 60  b

plyr套餐将帮助您:

> df.collapse
   V1 V2 V3 V4
1 egg  2 25  a
2 jap  3 55  b
因为R没有模式函数(可能),所以我放置了其他函数。
但实现模式功能很容易。

plyr软件包将帮助您:

> df.collapse
   V1 V2 V3 V4
1 egg  2 25  a
2 jap  3 55  b
因为R没有模式函数(可能),所以我放置了其他函数。
但是实现模式功能很容易。

我建议使用
plyr
中的
ddply

library(plyr)
ddply(df, .(V1), summarize, V2 = max(V2), V3 = mean(V3), V4 = toupper(V4)[1])
require(plyr)
ddply(df, .(V1), summarise, V2=max(V2), V3=mean(V3), V4=V4[1])
你可以用你想要的任何计算替换这些函数。您的V3列是非数字的,因此可能需要将其转换为数字,然后计算模式。现在,我只是为每个拆分返回第一行的V3值。或者如果您不想使用
plyr

library(plyr)
ddply(df, .(V1), summarize, V2 = max(V2), V3 = mean(V3), V4 = toupper(V4)[1])
require(plyr)
ddply(df, .(V1), summarise, V2=max(V2), V3=mean(V3), V4=V4[1])

我建议使用
plyr
中的
ddply

library(plyr)
ddply(df, .(V1), summarize, V2 = max(V2), V3 = mean(V3), V4 = toupper(V4)[1])
require(plyr)
ddply(df, .(V1), summarise, V2=max(V2), V3=mean(V3), V4=V4[1])
你可以用你想要的任何计算替换这些函数。您的V3列是非数字的,因此可能需要将其转换为数字,然后计算模式。现在,我只是为每个拆分返回第一行的V3值。或者如果您不想使用
plyr

library(plyr)
ddply(df, .(V1), summarize, V2 = max(V2), V3 = mean(V3), V4 = toupper(V4)[1])
require(plyr)
ddply(df, .(V1), summarise, V2=max(V2), V3=mean(V3), V4=V4[1])

+1用于使用do.call的备选方案。我不知道这是好是坏,但很高兴知道还有其他选择。+1表示使用do.call的备选方案。我不知道这是好是坏,但很高兴知道还有其他选择。谢谢!简洁且非常有用+1谢谢!简洁且非常有用+1