簡體   English   中英

如果第1列中的文本等於第2列中的文本(在r中),則從數據框中刪除一行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM