![](/img/trans.png)
[英]R: selecting a column in data.frame by knowing a value in a given row
[英]Selecting the data frame row with the earliest time value for a set period
我在 r 中有一個 df,其中有許多具有以下格式的記錄,其中 'arrival_time' 值為 12 小時。
ID | 到達時間 | 等待時間值 |
---|---|---|
1 | 2020-02-20 12:02:00 | 10 |
2 | 2020-02-20 12:04:00 | 5 |
99900 | 2020-02-20 23:47:00 | 8 |
10000 | 2020-02-20 23:59:00 | 21 |
我想創建一個新的 df,它在到達時間段的每個 15 分鍾時隙中都有一行,並且在該時隙中具有最早到達時間的記錄的 wait_time_value 。 因此,在上面的示例中,新 df 的第一行和最后一行將如下所示:
ID | period_start | 等待時間值 |
---|---|---|
1 | 2020-02-20 12:00:00 | 10 |
48 | 2020-02-20 23:45:00 | 8 |
我已經使用下面的代碼來實現每 15 分鍾范圍內所有記錄的平均等待時間,但我不確定如何 select 最早記錄的值?
df$period_start <- align.time(df$arrival_time- 899, n = 60*15)
avgwait_df <- aggregate(wait_time_value ~ period_start, df, mean)
將DataFrame.resample
與GroupBy.first
一起使用,僅刪除NaN
並轉換為DataFrame
:
df['arrival_time'] = pd.to_datetime(df['arrival_time'])
df = (df.resample('15Min', on='arrival_time')['wait_time_value']
.first()
.dropna()
.reset_index(name='wait_time_value'))
print (df)
arrival_time wait_time_value
0 2020-02-20 12:00:00 10.0
1 2020-02-20 23:45:00 8.0
使用dplyr
:
df %>%
group_by(period_start) %>%
summarise(wait_time = min(wait_time_value))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.