【问题标题】:How filter csv by row name in R如何在R中按行名过滤csv
【发布时间】:2025-11-25 17:35:01
【问题描述】:

我有一个 csv 文件,其中包含 100 多个具有不同背景/人口统计信息的名称(请参见下面的示例):

Name Data 2000 2001
Pam Job Analyst Associate
Jim Job Manager Director
Steve Job Manager Director
Dave Job Manager Manager
Pam Salary 50000 65000
Jim Salary 100000 120000
Steve Salary 100000 120000
Dave Salary 90000 90000

如何按名称(假设我只想查看 Pam 和 Dave)和数据(仅限工作)过滤 csv 文件。当然,我想大规模地执行此操作(理想情况下,我希望将具有 100 个名称的原始文件过滤到 20 个特定名称,并将 20 个数据过滤到 10 个)。

【问题讨论】:

    标签: r csv


    【解决方案1】:
    > df
           Name   Data   X2000     X2001
        1   Pam    Job Analyst Associate
        2   Jim    Job Manager  Director
        3 Steve    Job Manager  Director
        4  Dave    Job Manager   Manager
        5   Pam Salary   50000     65000
        6   Jim Salary  100000    120000
        7 Steve Salary  100000    120000
        8  Dave Salary   90000     90000
    

    为了过滤名字 Pam 和 Dave,并通过数据作业,我使用 filter 函数:

    df <- 
      df %>%
      filter((Name == "Pam" | Name == "Dave"))
    

    过滤他们的名字后,你也可以过滤数据列:

    df <- 
      df %>%
      filter((Data == "Job"))
    

    我明白了:

      Name Data   X2000     X2001
    1  Pam  Job Analyst Associate
    2 Dave  Job Manager   Manager
    

    【讨论】:

    • 谢谢,但有没有办法大规模地做到这一点。假设您要将 csv 过滤到 50 个名称?
    【解决方案2】:

    我们可以首先创建两个向量,其中包含您要过滤的 20 个名称和 10 个数据。这是一个包含三个名称和两个数据的示例。

    vnames<-c("Pam", "Jim", "Steve")
    vdata<-c("Job", "Salary")
    

    然后我们可以创建一个过滤后的数据帧(过滤后的),将一个子集应用到您的初始数据帧 (df)

    filtered<-subset(df, Name %in% vnames & Data %in% vdata)
    

    【讨论】: