删除整行以使两个数据集大小相同
removing entire rows to make the two datasets the same size
我需要帮助删除第一列 (V1) 中的元素与列 (X1) 中的元素不对应的行。我的数据集更大,我只是用这个例子来让它更容易理解。
V1 V2 V3 X1 X2 X3
[1,] 1 2 3 [1,] 1 2 3
[2,] 2 2 3 [2,] 1 2 3
[3,] 1 2 3 [3,] 1 2 3
[4,] 1 2 3
[5,] 3 2 3
对于这个例子,我需要代码删除行 [2,] 和 [5,],因为它们与 X1 中的不同(一般的想法是修复我的数据集,使它们具有相同的元素并删除那些在 V 但不在 X 中的元素)。
我想的代码是这样的:
for(k in 1:nrow(V)){
if(V[k,1]!=X[k,1]){
V[-k,]
}
}
但它不起作用,因为 V 的大小与 X 不同。
如有任何帮助,我们将不胜感激!!
我们可以使用 %in%
来获取 'V1'(在矩阵 'm1' 中)元素的逻辑索引,这些元素存在于 'X1'(来自 'm2'), 取反 (!
) 以获得不存在的元素,并将其用作行索引以对 'm1'.
进行子集化
m1[!m1[,'V1'] %in% m2[, 'X1'],]
# V1 V2 V3
#[1,] 2 2 3
#[2,] 3 2 3
我需要帮助删除第一列 (V1) 中的元素与列 (X1) 中的元素不对应的行。我的数据集更大,我只是用这个例子来让它更容易理解。
V1 V2 V3 X1 X2 X3
[1,] 1 2 3 [1,] 1 2 3
[2,] 2 2 3 [2,] 1 2 3
[3,] 1 2 3 [3,] 1 2 3
[4,] 1 2 3
[5,] 3 2 3
对于这个例子,我需要代码删除行 [2,] 和 [5,],因为它们与 X1 中的不同(一般的想法是修复我的数据集,使它们具有相同的元素并删除那些在 V 但不在 X 中的元素)。
我想的代码是这样的:
for(k in 1:nrow(V)){
if(V[k,1]!=X[k,1]){
V[-k,]
}
}
但它不起作用,因为 V 的大小与 X 不同。
如有任何帮助,我们将不胜感激!!
我们可以使用 %in%
来获取 'V1'(在矩阵 'm1' 中)元素的逻辑索引,这些元素存在于 'X1'(来自 'm2'), 取反 (!
) 以获得不存在的元素,并将其用作行索引以对 'm1'.
m1[!m1[,'V1'] %in% m2[, 'X1'],]
# V1 V2 V3
#[1,] 2 2 3
#[2,] 3 2 3