R 使用ddply的摘要统计信息

R 使用ddply的摘要统计信息,r,dataframe,plyr,R,Dataframe,Plyr,我喜欢使用ddply编写一个函数,该函数根据data.framemat的两列名称输出摘要统计信息 mat是一个大的数据框,列名为“公制”、“长度”、“种类”、“树”、“索引” 索引是具有两个级别的系数“短”、“长” “公制”、“长度”、“种类”、“树”等都是连续变量 功能: summary1 <- function(arg1,arg2) { ... ss <- ddply(mat, .(index), function(X) data.frame(

我喜欢使用
ddply
编写一个函数,该函数根据
data.frame
mat
的两列名称输出摘要统计信息

  • mat
    是一个大的
    数据框
    ,列名为
    “公制”、“长度”、“种类”、“树”、“索引”

  • 索引
    是具有两个级别的系数
    “短”、“长”

  • “公制”、“长度”、“种类”、“树”等都是连续变量

功能:

summary1 <- function(arg1,arg2) {
    ...

    ss <- ddply(mat, .(index), function(X) data.frame(
        arg1 = as.list(summary(X$arg1)),
        arg2 = as.list(summary(X$arg2)),
        .parallel = FALSE)

    ss
}
此时,该函数不产生所需的输出?这里应该做什么修改

谢谢你的帮助


这里是一个玩具的例子

mat <- data.frame(
    metric = rpois(10,10), length = rpois(10,10), species = rpois(10,10),
    tree = rpois(10,10), index = c(rep("Short",5),rep("Long",5))
)

mat这更像你想要的吗

summary1 <- function(arg1,arg2) {
ss <- ddply(mat, .(index), function(X){ data.frame(
    arg1 = as.list(summary(X[,arg1])),
    arg2 = as.list(summary(X[,arg2])),
    .parallel = FALSE)})
ss
}
summary1因为不能使用
$
引用作为字符名传递的变量。编写
X$arg1
时,然后
R
data.frame
X
中搜索名为
“arg1”
的列。您可以通过
X[,arg1]
X[[arg1]]
来引用它

如果您想获得命名良好的输出,我建议以下解决方案:

summary1 <- function(arg1, arg2) {

    ss <- ddply(mat, .(index), function(X) data.frame(
        setNames(
            list(as.list(summary(X[[arg1]])), as.list(summary(X[[arg2]]))),
            c(arg1,arg2)
            )), .parallel = FALSE)

    ss
}
summary1("metric","length")

如果您提供示例数据(最好是使用
dput
),这将更容易回答。@Richie-这里有一个玩具示例
mat您可以编辑问题以添加示例数据,而不是编写注释(我为您完成了此操作;))。我建议通过为
data.frame
和要拆分的变量传入附加参数,使函数更具通用性。这样,当您需要在名为
Mat
Mat
MyOtherData
等的data.frame上使用函数时,该函数将正常工作。应该有一个R通用函数。甚至支持任何数量的论点。有这样的情况吗?
summary1 <- function(arg1, arg2) {

    ss <- ddply(mat, .(index), function(X) data.frame(
        setNames(
            list(as.list(summary(X[[arg1]])), as.list(summary(X[[arg2]]))),
            c(arg1,arg2)
            )), .parallel = FALSE)

    ss
}
summary1("metric","length")
  index metric.Min. metric.1st.Qu. metric.Median metric.Mean metric.3rd.Qu.
1  Long           5              7            10         8.6             10
2 Short           7              7             9         8.8             10
  metric.Max. length.Min. length.1st.Qu. length.Median length.Mean length.3rd.Qu.
1          11           9             10            11        10.8             12
2          11           4              9             9         9.0             11
  length.Max.
1          12
2          12