R:从一个数据框中删除另一个数据框中的行

时间:2012-06-06 02:10:17

标签: r

我有两个数据帧df1和df2。它们具有相同的(两列)列。我想从df2中删除df1中的行。

3 个答案:

答案 0 :(得分:8)

你可以用几个包来做到这一点。但是这里是如何用基础R做的。

df1 <-matrix(1:6,ncol=2,byrow=TRUE)
df2 <-matrix(1:10,ncol=2,byrow=TRUE)
all <-rbind(df1,df2) #rbind the columns
#use !duplicated fromLast = FALSE and fromLast = TRUE to get unique rows.
all[!duplicated(all,fromLast = FALSE)&!duplicated(all,fromLast = TRUE),] 

     [,1] [,2]
[1,]    7    8
[2,]    9   10

答案 1 :(得分:3)

试试这个:

df2 <-matrix(1:6,ncol=2,byrow=TRUE)
df1 <-matrix(1:10,ncol=2,byrow=TRUE)

data.frame(v1=setdiff(df1[,1], df2[,1]), v2=setdiff(df1[,2], df2[,2]))
  v1 v2
1  7  8
2  9 10

请注意,df1df2与Lapointe相同,但反过来,因为你想从df2中删除df2中的行,所以setdiff从{{1 } {}包含在x中。见y

你会得到与Lapointe的相同的结果

答案 2 :(得分:0)

考虑到您有一个在两个数据帧之间匹配的变量(var_match),我得到了一个简单的答案:

<form [formGroup]="createForm" class="create-form">
    <mat-form-field class="field-full-width">
            <mat-label>Instrument</mat-label>
            <mat-select matInput formControlName="createForm.get('Machine_ID')" #Machine_ID>
                <mat-option *ngFor="let instrument of instruments" [value]="instrument.instrumentName">
                    {{instrument.instrumentName}}
                  </mat-option>
            </mat-select>
        </mat-form-field>
</form>
<button (click)="addSample()"
          [disabled]="createForm.invalid" mat-raised-button color="primary">Save</button>