R语言:如何筛选保留同一Text_ID对应不同Course_ID的数据行
如何筛选出同一Text_ID对应不同Course_ID的记录
嘿,我完全理解你的需求啦——就是要保留那些同一个Text_ID对应不止一个不同Course_ID的数据行,去掉那些Text_ID对应的Course_ID全一样的记录对吧?作为编程新手,你可以根据自己常用的工具选择下面的方法:
方法一:用Excel(适合无编程基础的情况)
这是最容易上手的方式,只需要借助辅助列和筛选功能就能搞定:
- 第一步:在数据旁边新增一列(比如C列),在C2单元格输入公式:
(注意把公式里的=SUMPRODUCT(($B$2:$B$11=B2)/COUNTIF($A$2:$A$11&$B$2:$B$11,$A$2:$A$11&$B$2:$B$11))$B$2:$B$11和$A$2:$A$11替换成你实际的数据范围) - 第二步:把C2的公式下拉填充到所有行,这个列的数值代表当前行的Text_ID对应的唯一Course_ID数量
- 第三步:选中整个数据区域,用「数据」选项卡的「筛选」功能,然后在C列的筛选器里选择「大于1」,剩下的就是你要的目标数据啦
方法二:用Python Pandas(适合想入门编程的情况)
如果你想尝试用代码实现,Pandas是处理表格数据的利器,步骤非常清晰:
- 先安装Pandas(如果没装的话,在命令行输入:
pip install pandas) - 编写代码:
import pandas as pd # 读取你的数据(如果是Excel文件就用pd.read_excel替换pd.read_csv) df = pd.read_csv("你的数据文件名.csv") # 第一步:找出所有有多个不同Course_ID的Text_ID # 按Text_ID分组,统计每组的唯一Course_ID数量,筛选出数量>1的Text_ID target_text_ids = df.groupby("Text_ID")["Course_ID"].nunique()[lambda x: x > 1].index # 第二步:筛选出这些Text_ID对应的所有行 result_df = df[df["Text_ID"].isin(target_text_ids)] # 第三步:把结果保存成新的文件 result_df.to_csv("筛选后的数据.csv", index=False) - 运行代码后,你就能得到符合要求的结果文件啦
内容的提问来源于stack exchange,提问作者Japes
相关产品推荐
相关产品推荐

