gpt4 book ai didi

R:根据组与另一列的最大值的行差异的新列

转载 作者:行者123 更新时间:2023-12-01 13:12:02 25 4
gpt4 key购买 nike

问题的标题可能不清楚,但我希望这些代码能清楚地说明我的问题。
我有一个包含三列的数据框。 $sensor(A 和 B);一天中的 $ 小时(0-4);以及温度 (1-5) 所取的 $value。

 new.df <- data.frame(
sensor = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B"),
hour_day = c(0:4, 0:4),
value = c(1, 1, 3, 1, 2, 1, 3, 4, 5, 2)

new.df

sensor hour_day value
1 A 0 1
2 A 1 1
3 A 2 3
4 A 3 1
5 A 4 2
6 B 0 1
7 B 1 3
8 B 2 4
9 B 3 5
10 B 4 2
我想创建一个指示 的新列差异根据 从具有最大值的小时开始传感器 .
想要的结果
   sensor value hour_day hour_from_max_hour
1 A 1 0 -2
2 A 1 1 -1
3 A 3 2 0
4 A 1 3 1
5 A 2 4 2
6 B 1 0 -3
7 B 3 1 -2
8 B 4 2 -1
9 B 5 3 0
10 B 2 4 1
请注意,对于传感器 A(最大值 = 2 小时)和传感器 B(最大值 = 3 小时)。我只想要一个新列,告诉我传感器值组与最大传感器值相差多少小时。
在此先感谢您,如果我能提供更多信息,请告诉我。
编辑
以前的答案非常有帮助,我忘了这个问题还有一个变量(天)。此外,有时一列中有多个最大值。在这种情况下,我想将差异基于 第一 最大值。
df_add <- data.frame(
sensor = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B",
"A", "A", "A", "A", "A", "B", "B", "B", "B", "B"),
hour_day = c(0:4, 0:4, 0:4, 0:4),
value = c(1, 1, 3, 3, 2,
3, 2, 4, 4, 1,
1, 5, 6, 6, 2,
2, 1, 3, 3, 1),
day = c(1, 1, 1, 1, 1,
1, 1, 1, 1, 1,
2, 2, 2, 2, 2,
2, 2, 2, 2, 2)

)
df_add
   sensor hour_day value day
1 A 0 1 1
2 A 1 1 1
3 A 2 3 1
4 A 3 3 1
5 A 4 2 1
6 B 0 3 1
7 B 1 2 1
8 B 2 4 1
9 B 3 4 1
10 B 4 1 1
11 A 0 1 2
12 A 1 5 2
13 A 2 6 2
14 A 3 6 2
15 A 4 2 2
16 B 0 2 2
17 B 1 1 2
18 B 2 3 2
19 B 3 3 2
20 B 4 1 2

最佳答案

一个简单的管道就可以做到。您所要做的就是获取max(value)mutate操作说明。

new.df %>%
group_by(sensor) %>%
mutate(hour_from_max_hour = hour_day - hour_day[which(value == max(value))[1]])
## A tibble: 10 x 4
## Groups: sensor [2]
# sensor hour_day value hour_from_max_hour
# <fct> <int> <dbl> <int>
# 1 A 0 1. -2
# 2 A 1 1. -1
# 3 A 2 3. 0
# 4 A 3 1. 1
# 5 A 4 2. 2
# 6 B 0 1. -3
# 7 B 1 3. -2
# 8 B 2 4. -1
# 9 B 3 5. 0
#10 B 4 2. 1

关于R:根据组与另一列的最大值的行差异的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52263954/

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