我创建了一个数据框,它是22个8个变量的对象。我在这一点上关注的两个与该问题相关的向量是vect1和vect2。有4个唯一值包含vect1,所有四个元素重复多次。我似乎无法弄清楚的是如何循环数据框并找到vect1的所有值的平均值,中值,模式或任何其他统计计算,相对于其vect2值。或者就此而言,将vect2中具有特定vect1值的所有值相加。
答案 0 :(得分:0)
我们可以使用dplyr
library(dplyr)
df1 %>%
group_by(vect1) %>%
summarise_each(funs(sum, mean, median, Mode), vect2)
其中Mode
是
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
答案 1 :(得分:0)
也许这会有所帮助......
> set.seed(22)
> df2 <- data.frame(replicate(8,sample(0:50,22000,rep=TRUE)))
> Mode <- function(x) {
+ ux <- unique(x)
+ ux[which.max(tabulate(match(x, ux)))]
+ }
> library(dplyr)
> df2 %>%
+ group_by(X1) %>%
+ summarise_each(funs(sum, mean, median, Mode), X2)
Source: local data frame [51 x 5]
X1 sum mean median Mode
(int) (int) (dbl) (dbl) (int)
1 0 10757 25.55107 25.0 38
2 1 11198 24.18575 24.0 2
3 2 10682 24.66975 25.0 46
4 3 11168 26.15457 26.0 17
5 4 10430 25.68966 26.5 26
6 5 10840 24.63636 25.0 33
7 6 11134 24.57837 25.0 5
8 7 10946 25.22120 26.0 31
9 8 11761 25.79167 27.0 28
10 9 11126 24.94619 26.0 34
.. ... ... ... ... ...
如果你能提供一些有用的数据样本,但上述内容应该有助于澄清Akrun提供的答案。通常,看到一行数据或仅仅是您所引用的Dataframe的描述会很棒。例如:
> str(df2)
'data.frame': 22000 obs. of 8 variables:
$ X1: int 15 24 50 26 43 36 31 37 21 19 ...
$ X2: int 33 45 26 6 3 6 14 47 29 21 ...
$ X3: int 48 23 12 10 17 33 28 20 18 39 ...
$ X4: int 29 10 10 38 11 5 35 9 31 37 ...
$ X5: int 33 25 43 16 35 12 24 16 2 50 ...
$ X6: int 3 18 12 8 36 30 20 1 4 0 ...
$ X7: int 24 23 47 25 5 25 41 38 45 19 ...
$ X8: int 28 25 15 33 29 29 45 38 8 14 ...
我希望以上有所帮助。
保重 吨。