我有一个我想要分组的数据框,所以我可以对每个组做一些基本的统计。但是,由于我用于分组的列是一个字符向量,我在尝试完成此操作的各种尝试中都没有成功。这是一个样本
Name Value rate
1 SW115 25 3
2 SW115 34 3
3 SW115 25 3
4 SW115 30 3
5 SW115 36 3
6 SW345 32 4
7 SW345 43 4
8 SW345 35 4
9 SW345 24 4
10 SW345 23 4
11 SW445 32 5
12 SW445 33 5
13 SW445 24 5
14 SW445 35 5
15 SW445 25 5
正如我所说,我想按“名称”对其进行分组,并找出每组的“价值”的均值和简历。因此,在我的例子中,SW115将是一个组,SW345将是另一个组,我想知道每个组的平均值,sd和变异系数。我可以通过子集手动完成此操作,但我正在工作的原始数据有超过5000行,包含大约57个可能的组,并且需要花费数小时来手动完成每个组。我知道必须有一种方法可以通过几行代码来完成它,这样它就可以为每个组提供一次总结。
我尝试将列“name”转换为数字(以便每个组都有一个数字),但我也无法完成它。
任何建议都将不胜感激
答案 0 :(得分:1)
使用dplyr
,这非常简单。
library(dplyr)
x <- [YOUR DATA SET]
x %>%
group_by(Name) %>%
dplyr::summarise(mean = mean(Value),
sd = sd(Value)) %>%
mutate(cv = (sd/mean)*100)
答案 1 :(得分:1)
创建数据:
name <- c(rep("SW115", 5), rep("SW345", 5), rep("SW445", 5))
Value <- c(25,34,25,30,36,32,43,35,24,23,32,33,24,35,25)
rate <- c(rep(3, 5), rep(4, 5), rep(5, 5))
df <- data.frame(name, Value, rate)
这就是你想要的:
aggregate(df[,2:3], list(df$name), mean )
aggregate(df[,2:3], list(df$name), sd )
您想要的统计数据。