基于R中另一个csv文件中的内容对csv文件中的数据进行子集设置

基于R中另一个csv文件中的内容对csv文件中的数据进行子集设置,r,subset,R,Subset,希望根据df.csv中存储的数据列表(其中有一列名为PAN)从csv文件mf.csv中获取信息 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") dataA在OP的代码中,在%中%的rhs上使用了整个data

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

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")

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

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

根据这些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

作为参考。

我认为您的
子集
代码应该是
子集(dataA,PAN%in%dataD$columnname)
因为
dataD
是一个
data.frame
。你能提供一个小的可复制的例子和预期的输出(如果上面不起作用的话)。嘿,thanx..它起作用了。