如何在R语言中移除数据框中的不完整周数据
筛选完整周数据(按
ww列分组保留记录≥7的行) 需求说明
需要排除「ww」列中同一周数对应记录少于7条的所有行,仅保留记录数≥7的完整周数据。示例中29周、32周因记录不足7条,对应行需被排除。
处理步骤(Python pandas实现)
- 按
ww列分组统计每组记录数 - 筛选出记录数≥7的周数
- 用筛选后的周数过滤原数据集
代码示例
import pandas as pd # 读取示例数据(实际场景可替换为pd.read_csv()读取文件) data = pd.DataFrame({ 'Date': ['2018-07-19', '2018-07-20', '2018-07-21', '2018-07-22', '2018-07-23', '2018-07-24', '2018-07-25', '2018-07-26', '2018-07-27', '2018-07-28', '2018-07-29', '2018-07-30', '2018-07-31', '2018-08-01', '2018-08-02', '2018-08-03', '2018-08-04', '2018-08-05', '2018-08-06', '2018-08-07'], 'Close': [0.4833250, 0.4328458, 0.3919436, 0.3772339, 0.3607929, 0.3531285, 0.3614665, 0.3782509, 0.3500712, 0.3510113, 0.3859281, 0.3696146, 0.3418870, 0.3230662, 0.2872402, 0.2476886, 0.2474120, 0.2342555, 0.3182011, 0.2939107], 'MarketCap': [19332999, 17313830, 15677744, 15089355, 14431715, 14125139, 14458661, 15130036, 14002849, 14040452, 15437126, 14784582, 13675481, 12922649, 11489610, 9907543, 9896481, 9370222, 12728042, 11756427], 'CoinName': ['0chain']*20, 'datenum': [17731, 17732, 17733, 17734, 17735, 17736, 17737, 17738, 17739, 17740, 17741, 17742, 17743, 17744, 17745, 17746, 17747, 17748, 17749, 17750], 'yyyy': [2018]*20, 'mm': [7]*13 + [8]*7, 'ww': [29,29,29,30,30,30,30,30,30,30,31,31,31,31,31,31,31,32,32,32], 'dd': [19,20,21,22,23,24,25,26,27,28,29,30,31,1,2,3,4,5,6,7], 'yyyymmdd': [20180719,20180720,20180721,20180722,20180723,20180724,20180725,20180726,20180727,20180728,20180729,20180730,20180731,20180801,20180802,20180803,20180804,20180805,20180806,20180807] }) # 按ww分组统计记录数 week_counts = data.groupby('ww').size() # 筛选出记录数≥7的有效周 valid_weeks = week_counts[week_counts >= 7].index # 过滤原数据,仅保留有效周的行 filtered_data = data[data['ww'].isin(valid_weeks)] # 输出结果 print(filtered_data)
结果说明
运行代码后,原数据中ww=29和ww=32的行被全部排除,仅保留ww=30(7条记录)和ww=31(7条记录)的所有行。
内容的提问来源于stack exchange,提问作者Erik Stålman
相关产品推荐
相关产品推荐

