【问题标题】:Subsetting data from a csv file based on contents in another csv file in R根据 R 中另一个 csv 文件中的内容对 csv 文件中的数据进行子集化
【发布时间】:2015-10-30 22:17:41
【问题描述】:

希望从 csv 文件中获取信息 - mf.csv 基于存储在 df.csv 中的数据列表(其中有一列名为 PAN)

dataA <- read.csv("C://Users//mf.csv")

dataD <- read.csv("C://Users//df.csv")

dataG <- subset(dataA, PAN %in% dataD)

write.csv(dataG,"C://Users//result.csv")

谢谢。

【问题讨论】:

  • 我认为您的subset 代码应该是subset(dataA, PAN %in% dataD$columnname),因为dataDdata.frame。您能否提供一个可重现的小示例和预期输出(如果上述方法不起作用)。
  • 嘿thanx..它的作品。

标签: r subset


【解决方案1】:

在 OP 的代码中,在%in% 的 rhs 上使用了整个 data.frame 而不是列。代码应该是

subset(dataA, PAN %in% dataD$columnname)

【讨论】:

    【解决方案2】:

    根据这些 csv 文件的大小,例如,如果它们太大而无法加载到 R 中或加载到 R 中很慢,您可以在命令行中使用awk 执行此操作,这样会更快。

    awk -F',' 'NR==FNR {arr[$1]++; next} (($1 in arr) && ($2 in arr)) {print $0}' file1 file2
    

    这只会打印结果,但您可以将其写入新的 csv:

     awk -F',' 'NR==FNR {arr[$1]++; next} (($1 in arr) && ($2 in arr)) {print $0}' file1 file2 > new.csv
    

    awk; searching file2 by file1 供参考。

    【讨论】:

      猜你喜欢
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      相关资源
      最近更新 更多