dplyr在mutate中每组广播单个值

米尔伯特

我正在尝试针对每个组中的值(通过dplyr)执行与Scale非常相似的操作(但是此解决方案似乎会使R崩溃)。我想为每个组复制一个值,并添加一个重复此值的新列。例如我有

library(dplyr)

data = expand.grid(
  category = LETTERS[1:2],
  year = 2000:2003)
data$value = runif(nrow(data))

data

  category year     value
1        A 2000 0.6278798
2        B 2000 0.6112281
3        A 2001 0.2170495
4        B 2001 0.6454874
5        A 2002 0.9234604
6        B 2002 0.9311204
7        A 2003 0.5387899
8        B 2003 0.5573527

我想要一个像

data

  category year     value    value2
1        A 2000 0.6278798 0.6278798
2        B 2000 0.6112281 0.6112281
3        A 2001 0.2170495 0.6278798
4        B 2001 0.6454874 0.6112281
5        A 2002 0.9234604 0.6278798
6        B 2002 0.9311204 0.6112281
7        A 2003 0.5387899 0.6278798
8        B 2003 0.5573527 0.6112281

也就是说,每个类别的值都是2000年以来的值。我试图考虑可扩展到给定过滤条件的一般解决方案,例如

data %>% group_by(category) %>% mutate(value = filter(data, year==2002))

但是,由于分配的长度不正确,因此无法使用。

格雷戈尔·托马斯(Gregor Thomas)

做这个:

data %>% group_by(category) %>%
  mutate(value2 = value[year == 2000])

您也可以这样进行:

data %>% group_by(category) %>%
  arrange(year) %>%
  mutate(value2 = value[1])

或者

data %>% group_by(category) %>%
  arrange(year) %>%
  mutate(value2 = first(value))

或者

data %>% group_by(category) %>%
  mutate(value2 = nth(value, n = 1, order_by = "year"))

或其他几种方式

mutate(value = filter(data, year==2002))由于以下几个原因,您的尝试没有任何意义。

  1. 当您data再次明确传递时,它不是早先进行分组的链的一部分,因此它不知道分组。

  2. 所有dplyr动词都将数据框作为第一个参数,并返回一个数据框,包括filter当您value = filter(...)尝试将完整的数据帧分配给单列时value

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

汇总dplyr中每组的所有其他值

来自分类Dev

使用dplyr mutate查找值在组中的首次出现

来自分类Dev

mutate()中的Dplyr管道(%>%)?

来自分类Dev

计算每组中的值范围

来自分类Dev

在dplyr 1.0.0中的单个mutate()函数中合并两个列转换

来自分类Dev

每组返回单个记录,最大值

来自分类常见问题

dplyr mutate中的动态语句

来自分类Dev

在dplyr mutate()中返回列表

来自分类Dev

dplyr mutate中的动态语句

来自分类Dev

在dplyr mutate()中返回列表

来自分类Dev

将列值与其在dplyr :: mutate中的所有前导值进行比较

来自分类Dev

字典列表中的广播值

来自分类Dev

获取每组中列值的中位数

来自分类Dev

dplyr :: mutate添加多个值

来自分类Dev

在dplyr :: mutate中应用自定义函数时出现意外值

来自分类Dev

dplyr::mutate 中的嵌套 ifelse 调用为每一行返回相同的值

来自分类Dev

dplyr:mutate_each中的可选参数

来自分类Dev

在dplyr mutate调用中添加多列

来自分类Dev

dplyr mutate中的exp函数返回1

来自分类Dev

dplyr :: mutate_at遍历函数中的列

来自分类Dev

dplyr:在mutate_at函数中访问列名

来自分类Dev

返回dplyr mutate中的多列

来自分类Dev

mutate - dplyr 包中的价值共享

来自分类Dev

总结在dplyr软件包中:如何解决`错误:期望单个值`

来自分类Dev

dplyr summarise_impl(.data,点)中的错误:期望单个值

来自分类Dev

列出熊猫数据框中每组的唯一值计数

来自分类Dev

熊猫,分组数据框并标准化每组中的值

来自分类Dev

计算R中每组顺序结果值的长度

来自分类Dev

计算R中每组顺序结果值的长度