我有一个名为input.csv的文件,如下所示:
ID AVal BVal CVAL
ABC 1137169 386321 as
BCD 567314 95504 abc
BCD 567314 890 bcd
BCD 567315 15000 abc
BCD 567314 15000 abc
XYZ 366628 1093668 abc
XYZ 12 1093668 abc
XYZ 139 123 abc
条件:
如果ID =相同则 检查相应的A值和B值 如果A值为==该行的值或B值==该行的B值
Take the matching row and put it in the output file.
例如。 ID的第一个ID值是“ABC”,因为ABC不在ID列的任何位置,跳过它。 第二个值是“BCD”,如果我们遍历列表,我们会发现第三行的id为“BCD” 检查第2行的Aval,第3行的Aval或第2行的Bval,第3行的Bval,因为它们匹配,我们选择行。 BCD == BCD if((567314 == 567314)OR(95504 == 890) 选择“BCD 567314 890 bcd”并将其粘贴在输出文件中。
输出如下:
输出:
ID AVal BVal CVAL
BCD 567314 890 bcd
BCD 567314 15000 abc
XYZ 12 1093668 abc
答案 0 :(得分:0)
使用dplyr::group_by
和base::duplicated
,针对每个ID
检查AVal
OR
BVal
#replace below path with complete path of input.csv
DF = read.csv("full/path/to/input.csv",header=TRUE,stringsAsFactors=FALSE)
library(dplyr)
subDF =
DF %>%
group_by(ID) %>%
filter(duplicated(AVal)|duplicated(BVal)) %>%
as.data.frame()
subDF
# ID AVal BVal CVAL
#1 BCD 567314 890 bcd
#2 BCD 567314 15000 abc
#3 XYZ 12 1093668 abc
#write to output file
write.csv(subDF,"output.csv")