gpt4 book ai didi

r - 根据列中的条件为组分配值

转载 作者:行者123 更新时间:2023-12-04 03:11:08 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

> df = data.frame(group = c(1,1,1,2,2,2,3,3,3), 
date = c(1,2,3,4,5,6,7,8,9),
value = c(3,4,3,4,5,6,6,4,9))
> df
group date value
1 1 1 3
2 1 2 4
3 1 3 3
4 2 4 4
5 2 5 5
6 2 6 6
7 3 7 6
8 3 8 4
9 3 9 9

我想创建一个新列,其中包含与值列中的值“4”相关联的每个组的日期值。

以下数据框显示了我希望完成的工作。
  group date value newValue
1 1 1 3 2
2 1 2 4 2
3 1 3 3 2
4 2 4 4 4
5 2 5 5 4
6 2 6 6 4
7 3 7 6 8
8 3 8 4 8
9 3 9 9 8

如我们所见,组 1 具有 newValue “2”,因为这是与值“4”相关联的日期。同样,第二组有 newValue第4组和第3组有 newValue 8.

我认为使用 ave() 有一种简单的方法可以做到这一点。或范围 dplyr/ data.table功能,但我多次尝试都没有成功。

最佳答案

这是一个快速 data.table

library(data.table)
setDT(df)[, newValue := date[value == 4L], by = group]
df
# group date value newValue
# 1: 1 1 3 2
# 2: 1 2 4 2
# 3: 1 3 3 2
# 4: 2 4 4 4
# 5: 2 5 5 4
# 6: 2 6 6 4
# 7: 3 7 6 8
# 8: 3 8 4 8
# 9: 3 9 9 8

这是一个类似的 dplyr版本
library(dplyr)
df %>%
group_by(group) %>%
mutate(newValue = date[value == 4L])

或者使用 merge 的可能的基本 R 解决方案过滤数据后(之后需要一些重命名)
merge(df, df[df$value == 4, c("group", "date")], by = "group")

关于r - 根据列中的条件为组分配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32214654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com