V1 V2
0.5 2
0.8 13
0.7 5
0.9 25
1.2 4
…
请问如何按照区间对V2分组(统计最大值到最小值,分成n个区间),统计每个区间中所有V1值的平均数
回答
binning的部分可以用 case_when
library(tidyverse)
data %>%
mutate(V2 = case_when(V2 %>% between(0,1) ~ "0-1",
V2 %>% between(1,2) ~ "0-2",
TRUE ~ ">=3") %>%
group_by(V2) %>%
summarize(mean_value = mean(V1))
是不是 R 的代码比上面的 更用户友好点。
对 v2 列分组,映射成分组 ID 列,然后做平均值统计便可。
请参考以下代码
'''
按区间对某列做分组,然后统计各组的另一列的平均值。
author: 李毅
'''
import numpy as np
import pandas as pd
df = pd.DataFrame([
[0.1, 1],
[0.2, 2],
[0.3, 3],
[0.4, 4],
[0.5, 5],
[0.6, 6],
], columns=['v1',