我可以在此行中添加内容以包含分钟和最大值吗?
我的数据包含4000天的数据,我希望这些日子能够获得分钟,平均值和最大值的简单方法。 理想情况下在同一输出
> head(dd)
Time RPH T Days
1 00:00:00 6.42 39.6 Day 1
2 00:15:00 6.46 39.7 Day 1
3 00:30:00 6.30 39.6 Day 1
4 00:45:00 6.26 39.4 Day 1
5 01:00:00 6.23 39.3 Day 1
6 01:15:00 6.23 38.5 Day 1
每天由96个观察组成。它与Iris data.frame的格式非常相似。我用这个作为我的例子。
iris
by(iris[,1:4],iris$Species,colMeans)
>by(iris[,1:4],iris$Species,colMeans)
iris$Species: setosa
Sepal.Length Sepal.Width Petal.Length Petal.Width
5.006 3.428 1.462 0.246
------------------------------------------------------------
iris$Species: versicolor
Sepal.Length Sepal.Width Petal.Length Petal.Width
5.936 2.770 4.260 1.326
------------------------------------------------------------
iris$Species: virginica
Sepal.Length Sepal.Width Petal.Length Petal.Width
6.588 2.974 5.552 2.026
这很棒,但考虑到我正在使用的data.frame的大小:
将值放在表中进行进一步操作会很棒。
答案 0 :(得分:2)
我认为“doBy”包可能在这里很有用。它按组汇总数据并返回data.frame对象,这将允许您进行任何进一步的操作。试试这个:
install.packages("doBy")
library(doBy)
df <- summaryBy(Sepal.Length + Sepal.Width + Petal.Length + Petal.Width ~ Species,data=iris,
FUN=function(x){c(min=min(x),max=max(x), mean=mean(x))})
“〜”之前的变量是您想要汇总的变量,而“〜”之后的变量是您想要分组的变量。所以上面所做的是总结:1。Sepal.Length,2。Sepal.Width,3.Petal.Length和4.Petal.Width by Species。
您还可以在函数(x)参数中添加更多摘要统计信息。
答案 1 :(得分:1)
如果您想要快捷方式,我们可以使用describeBy()
包中的psych
。
library(psych)
describeBy(iris[,1:4], iris$Species)
#group: setosa
# vars n mean sd median trimmed mad min max range skew kurtosis se
#Sepal.Length 1 50 5.01 0.35 5.0 5.00 0.30 4.3 5.8 1.5 0.11 -0.45 0.05
#Sepal.Width 2 50 3.43 0.38 3.4 3.42 0.37 2.3 4.4 2.1 0.04 0.60 0.05
#Petal.Length 3 50 1.46 0.17 1.5 1.46 0.15 1.0 1.9 0.9 0.10 0.65 0.02
#Petal.Width 4 50 0.25 0.11 0.2 0.24 0.00 0.1 0.6 0.5 1.18 1.26 0.01
输出结构略有不同的可能base
R解决方案可以将summary()
与tapply()
结合使用 - 按Species
分组 - 和lapply
,循环遍历列。
lapply(iris, function(x) tapply(x, iris$Species, summary))
#$Sepal.Length
#$Sepal.Length$setosa
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 4.300 4.800 5.000 5.006 5.200 5.800
#
#$Sepal.Length$versicolor
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 4.900 5.600 5.900 5.936 6.300 7.000
#
#$Sepal.Length$virginica
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 4.900 6.225 6.500 6.588 6.900 7.900