【问题标题】:Subtracting two dataset减去两个数据集
【发布时间】:2012-02-07 06:39:18
【问题描述】:

我有 2 个数据集。一个是父数据集(A),另一个是它的子集(B)。我想从 A 创建一个不包含 B 行的数据集。它应该类似于

C=A-B

数据集 A 和 B 的列数和列名相同。

【问题讨论】:

标签: r dataset subtraction


【解决方案1】:

如果 B 是 A 的实际 subset,则可以在 rownames 上使用 setdiff

sset <- subset(mtcars,cyl==4)
mtcars[setdiff(rownames(mtcars),rownames(sset)),]

【讨论】:

  • 非常好。请注意,这是有效的,因为不允许重复的行名(即使您在创建数据框时设置了check.names = FALSE)。
【解决方案2】:

如果您不想将其转换为字符串进行比较,即做完全匹配 你可以试试这个

a <- data.frame(t(matrix(1:12,3,4)))
b <- data.frame(t(matrix(7:21,3,5)))
a[!apply(a,1,FUN=function(y){any(apply(b,1,FUN=function(x){all(x==y)}))}),]

【讨论】:

    【解决方案3】:

    类似以下的方法可能会奏效:

    C <- A[!(apply(A, 1, toString) %in% apply(B, 1, toString)), ]
    

    【讨论】:

      猜你喜欢
      • 2017-08-07
      • 2017-04-20
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多