r - 使用 mutate 创建一个新列,其中包含 R 中每个组的第一个值

标签 r dataframe

我目前正在从事 Sabermetric 研究项目,并且一整天都在尝试在数据框中创建一个新列来显示给定比赛的首发投手。本质上,如果我使用下面的示例,我有“a”和“b”的数据,但我无法弄清楚如何创建“c”作为“a”的每个唯一值的“b”的第一个值'。这应该很容易,但我刚刚开始学习 R。

    a   b   c
1   1   1   1
2   1   2   1
3   1   3   1
4   1   4   1
5   1   5   1
6   1   6   1
7   2   7   7
8   2   8   7
9   2   1   7
10  2   2   7
11  2   3   7
12  2   4   7
13  3   5   5
14  3   6   5
15  3   7   5

到目前为止我已经使用了mutategroup_by想出 sample <- sample %>% group_by(a) %>% mutate(c = first(b)) 但这只会使“c”的每个值成为第一个“b”的第一个值。因此,在上面的示例中,我当前的代码使“c”的每个值都等于 1。 我错过了一些东西,有什么建议吗?

最佳答案

我们可以使用基础R

 df1$c <- with(df1, ave(b, a, FUN= function(x) head(x,1)))

或者使用data.table

library(data.table)
setDT(df1)[, c:= head(b, 1), by = a]

关于r - 使用 mutate 创建一个新列,其中包含 R 中每个组的第一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37094600/

相关文章:

python - 根据滞后/变化的变量创建新列

python - 如何在 Pandas 中遍历 DataFrame 中的行

从快捷方式 Windows 10 运行 Shiny 的应用程序

r - 在已知坐标和半径的光栅上绘制圆

python - hist 中密度为 True 的 numpy.histogram 的维度

减少矩阵比较的计算量

python - 迭代数据帧中选定列的行到每行 "clean"

r - 在 Bookdown 中禁用语法高亮显示

python - 处理 DataFrame Pandas 中的缩写和拼写错误的单词

python - 如何根据 python 中的条件更改多个数据框列的数据类型?