[英]Removing a row from a Dataframe if text in column 1 equals text in column 2 (in r)
我正在尝试创建所有股票的独特组合。 我创建了一个包含所有组合的数据框。 但是,我想删除所有相同的内容。 因此,如果第1行第1列中的行情自动收录器等于第1行第2列中的文本,则我要设为NA或删除该行。 因此,您将获得所有独特的组合。
q <- c("BATS LN EQUITY","DGE LN EQUITY","IMB LN EQUITY","RDSB LN EQUITY")
p <- c("GBPUSD CURNCY","GOLDS INDEX","DXY CURNCY")
o <- expand.grid(q=q, p=p)
o[order(o$q),]
o <- data.frame(o)
o$q <- as.character(o$q)
o$p <- as.character(o$p)
o <- data.frame(o)
for(i in 1:nrow(o)){
if(o[i,1] = o[i,2]){
o[i,2] = NA
}
}
而是将其视为保持两列不相等的行。 试试: o[o$q != o$p,]
。
您的解决方案也可以使用,但是您需要在if
使用==
代替=
。 像这样:
for(i in 1:nrow(o)){
if(o[i,1] == o[i,2]){
o[i,2] = NA
}
}
这只是比我提到的第一种方式慢,而且没有惯用法。 它们具有不同的输出,但是两者都在您想要的选项集中。
我使用的是Python,所以pythonic的方式是在pandas中使用重复函数,但是对于r我认为unique()函数会更好:
unique(o)
也可以使用Duplicated()函数:
df[duplicated(o), ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.