【发布时间】:2018-09-10 19:02:24
【问题描述】:
问题的标题可能不清楚,但我希望这些代码能清楚地说明我的问题。
我有一个包含三列的数据框。 $传感器(A和B);一天中的$小时(0-4);以及温度(1-5)所取的$值。
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
我想创建一个新列,根据传感器指示小时与最大值的小时差。。 p>
想要的结果
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 小时)。我只想要一个新列,告诉我传感器值组与最大传感器值相差多少小时。
提前感谢您,如果我能提供更多信息,请告诉我。
编辑 以前的答案非常有帮助,我忘记了这个问题还有一个变量(天)。此外,有时一列中的最大值不止一个。在这种情况下,我想将差异基于 first 最大值。
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
【问题讨论】: