如何在R中基于share列按plot分组获取最常见的sp变量?
为DataFrame添加分组内最常见的sp列
原始数据
计算出share列后的初始DataFrame:
plot sp value sum share 0 A 1a 1 3 0.3 1 A 1b 1 3 0.3 2 A 1a 1 3 0.3 3 B 1a 2 4 0.5 4 B 1a 2 4 0.5 5 C 1b 3 9 0.3 6 C 1b 3 9 0.3 7 C 1b 3 9 0.3
需求
为每个plot分组新增dom.sp列,值为该分组内出现次数最多的sp变量值。
实现代码
import pandas as pd # 构建示例数据(实际使用时替换为你的DataFrame即可) data = { 'plot': ['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'], 'sp': ['1a', '1b', '1a', '1a', '1a', '1b', '1b', '1b'], 'value': [1, 1, 1, 2, 2, 3, 3, 3], 'sum': [3, 3, 3, 4, 4, 9, 9, 9], 'share': [0.3, 0.3, 0.3, 0.5, 0.5, 0.3, 0.3, 0.3] } df = pd.DataFrame(data) # 按plot分组,提取每组sp的众数作为dom.sp dom_sp = df.groupby('plot')['sp'].agg(lambda x: x.mode()[0]).reset_index(name='dom.sp') # 将结果合并回原DataFrame result_df = df.merge(dom_sp, on='plot', how='left') print(result_df)
输出结果
plot sp value sum share dom.sp 0 A 1a 1 3 0.3 1a 1 A 1b 1 3 0.3 1a 2 A 1a 1 3 0.3 1a 3 B 1a 2 4 0.5 1a 4 B 1a 2 4 0.5 1a 5 C 1b 3 9 0.3 1b 6 C 1b 3 9 0.3 1b 7 C 1b 3 9 0.3 1b
内容的提问来源于stack exchange,提问作者starski
相关产品推荐
相关产品推荐

