R-聚合在存储后创建奇怪大小的数据集
当我尝试使用以下数据的聚合进行统计时-例如- 存储了奇怪的输出大小R-聚合在存储后创建奇怪大小的数据集,r,aggregate,R,Aggregate,当我尝试使用以下数据的聚合进行统计时-例如- 存储了奇怪的输出大小 group O18 D 1 st1 -6.89 -53.52709 2 st1 -7.16 -56.75802 3 st1 -7.17 -54.79471 4 st2 -7.09 -54.98376 5 st2 -7.02 -54.56050 6 st2 -
group O18 D
1 st1 -6.89 -53.52709
2 st1 -7.16 -56.75802
3 st1 -7.17 -54.79471
4 st2 -7.09 -54.98376
5 st2 -7.02 -54.56050
6 st2 -6.99 -55.55472
我使用的命令是:
statistic <- aggregate(. ~ group, data=dt, FUN = function(x)
c(mean=mean(x), sd=sd(x)))
但是当我刚进去的时候
aggregate(. ~ group, data=dt, FUN = function(x) c(mean=mean(x), sd=sd(x)))
下面是印刷品
group O18.mean O18.sd D.mean D.sd
1 st1 -7.07333333 0.15885003 -55.0266058 1.6278974
2 st2 -7.03333333 0.05131601 -55.0329908 0.4989327
我想将第二个输出作为存储的数据集,而不仅仅是打印的
在第一次输出中,数据集的大小被定义为2*3,即使有第3行和第4行,当我们使用多个函数结果串联在一起(
c(mean=mean(x),sd=…)
)时,我不能使用sd值,结果中的列将被强制为矩阵
。因此,视图(输出)
显示的格式与预期不同。一个可能的选择是通过再次调用data.frame
来更改某些列的矩阵
格式
output <- do.call(data.frame, aggregate(. ~ group, data=dt,
FUN = function(x) c(mean=mean(x), sd=sd(x))))
str(output)
#'data.frame': 2 obs. of 5 variables:
#$ group : Factor w/ 2 levels "st1","st2": 1 2
#$ O18.mean: num -7.07 -7.03
#$ O18.sd : num 0.1589 0.0513
#$ D.mean : num -55 -55
#$ D.sd : num 1.628 0.499
是的,这是完全相同的代码,除了定义我不能做一个数据数组时,我存储有没有人有同样的问题?还是我错过了什么?@Khashaa,对不起-你是什么意思?试着转换到data.frame,即
do.call(data.frame,statistic)
。由于统计数据中只有三个变量,所以第2列和第3列是矩阵。尽管如此,我无法在r3.1.2
@JinaJeong中重现这个问题。您是否尝试过do.call(data.frame,aggregate(.~group,data=dt,FUN=function(x)c(mean=mean(x),sd=sd(x))
什么叫“存储数据集”?
output <- do.call(data.frame, aggregate(. ~ group, data=dt,
FUN = function(x) c(mean=mean(x), sd=sd(x))))
str(output)
#'data.frame': 2 obs. of 5 variables:
#$ group : Factor w/ 2 levels "st1","st2": 1 2
#$ O18.mean: num -7.07 -7.03
#$ O18.sd : num 0.1589 0.0513
#$ D.mean : num -55 -55
#$ D.sd : num 1.628 0.499
library(dplyr)
output1 <- dt %>%
group_by(group) %>%
summarise_each(funs(mean, sd))
str(output1)
#Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 2 obs. of 5 variables:
#$ group : chr "st1" "st2"
#$ O18_mean: num -7.07 -7.03
#$ D_mean : num -55 -55
#$ O18_sd : num 0.1589 0.0513
#$ D_sd : num 1.628 0.499
#- attr(*, "drop")= logi TRUE