相关疑难解决方法(0)

计算组平均值(或其他摘要统计数据)并分配给原始数据

我想要计算mean(或任何其他摘要长度之一,例如统计min,max,length,sum)的数值变量("值")的分组变量("基团")的每个水平内.

摘要统计应该被分配到具有一个新的变量相同的长度原始数据.即,原始数据中的每一行应该具有对应于当前组值的值-该数据组应该被折叠,以便每组中的一行.例如,考虑组mean:

之前

id  group  value
1   a      10
2   a      20
3   b      100
4   b      200
Run Code Online (Sandbox Code Playgroud)

id  group  value  grp.mean.values
1   a      10     15
2   a      20     15
3   b      100    150
4   b      200    150
Run Code Online (Sandbox Code Playgroud)

r mean r-faq

22
推荐指数
3
解决办法
2万
查看次数

是否有相当于Stata的egen功能?

Stata有一个非常好的命令,egen这使得计算观察组的统计数据变得容易.例如,可以计算每个组的最大值,平均值和最小值,并将它们作为变量添加到详细数据集中.Stata命令是一行代码:

by group : egen max = max(x)
Run Code Online (Sandbox Code Playgroud)

我从来没有summarisedplyr包中找到相同的命令,这使得计算每个组的统计数据变得容易,但是我必须运行一个循环来将统计数据与每个观察结果相关联:

library("dplyr")
N  <- 1000
tf  <- data.frame(group = sample(1:100, size = N, replace = TRUE), x = rnorm(N))
table(tf$group)
mtf  <- summarise(group_by(tbl_df(tf), group), max = max(x))
tf$max  <- NA
for (i in 1:nrow(mtf)) {
  tf$max[tf$group == mtf$group[i]]  <- mtf$max[i]
}
Run Code Online (Sandbox Code Playgroud)

有没有人有更好的解决方案?

r stata

8
推荐指数
1
解决办法
3807
查看次数

在 R 中,如何按组添加最大值?

我想使用 R 在我的数据集中创建一个新列,其中包含每个唯一组的最大值。我的数据如下所示:

group<-c("A","A","A","A","A","B","B","C","C","C")
replicate<-c(1,2,3,4,5,1,2,1,2,3)
x<-data.frame(cbind(group,replicate))
Run Code Online (Sandbox Code Playgroud)

我想创建如下所示的第三列 - 每组的最大值。

group   replicate max.per.group
A       1         5       
A       2         5
A       3         5
A       4         5
A       5         5
B       1         2
B       2         2
C       1         3
C       2         3
C       3         3
Run Code Online (Sandbox Code Playgroud)

r

5
推荐指数
2
解决办法
6265
查看次数

使用 Dplyr 查找组的最大值并在同一表的另一列中改变结果

我正在处理具有数千行和多列的巨大数据集。我想使用 Dplyr 查找列中组的最大值,并在同一表的另一列中改变结果。这是我的数据的示例:

df <- tibble(a = rep(letters[1:3], each = 3), b = seq(0.1,0.9, length.out = 9))
Run Code Online (Sandbox Code Playgroud)

我想找到每组列中的最大值a。我知道我可以使用以下代码在表中的每个组中显示最大值:

df %>% group_by(a) %>% summarise_all(list(~ max(.)))
Run Code Online (Sandbox Code Playgroud)

其产生:

# A tibble: 3 x 2
  a         b
  <chr> <dbl>
1 a       0.2
2 b       0.5
3 c       0.8
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的。我想要一个保留原始数据的表,但有一个附加列,c以便列中的每个值在b列中都有相应的值c,该值显示列中每个数据点所属的每个组中的最大值b。我想要的期望结果如下:

# A tibble: 9 x 3
  a         b     c
  <chr> <dbl> <dbl>
1 a       0.1   0.3
2 a       0.2   0.3
3 a       0.3   0.3
4 …
Run Code Online (Sandbox Code Playgroud)

r max dplyr tidyverse

3
推荐指数
1
解决办法
6768
查看次数

查找列中特定值的最大值?

我有一个包含 34 列和 12,964 行的数据框,其中两列是 Gene.Name 和 Mutation_Frequency。例如:

基因名称 Mutation_Frequency
CTLA4 0
TP53 4
CTLA4 2
CTLA4 2
TP53 4
TP53 6

我现在想创建一个名为“Highest_Mutation_Frequency”的列,它告诉我 Gene.Name 的最高突变频率,并将其放在一个新列中,如下所示:

基因名称 Mutation_Frequency Highest_Mutation_Frequency
CTLA4 0 2
TP53 4 6
CTLA4 2 2
CTLA4 2 2
TP53 0 6
TP53 6 6

我意识到我可能可以使用 max() 命令,但我不确定如何实现它。与往常一样,任何帮助表示赞赏!

编辑:虽然这与另一个问题非常相似: 选择每组中具有最大值的行 这个问题还涉及生成唯一的行并将它们放置在另一个数据框中。

r max dataframe

2
推荐指数
2
解决办法
51
查看次数

标签 统计

r ×5

max ×2

dataframe ×1

dplyr ×1

mean ×1

r-faq ×1

stata ×1

tidyverse ×1