我有以下数据
x y z
1 2 a
1 2
Run Code Online (Sandbox Code Playgroud)
数据[2,3]是一个因素,但没有显示,在数据中,它有很多行像这样.如果z什么都没有删除行?我的意思是删除第二行等行.
输出应该是
x y z
1 2 a
Run Code Online (Sandbox Code Playgroud)
好.在这里黑暗中刺了一下.
想象一下以下数据集:
mydf <- data.frame(
x = c(.11, .11, .33, .33, .11, .11),
y = c(.22, .22, .44, .44, .22, .44),
z = c("a", "", "", "f", "b", ""))
mydf
# x y z
# 1 0.11 0.22 a
# 2 0.11 0.22
# 3 0.33 0.44
# 4 0.33 0.44 f
# 5 0.11 0.22 b
# 6 0.11 0.44
Run Code Online (Sandbox Code Playgroud)
从你的标题和描述的组合(两者似乎都没有完全描述你的问题),我会解码你想要删除第2行和第3行,但不是第6行.换句话说,你想先检查是否行是重复的(可能只是前两列),然后,如果第三列为空,则删除该行.按照这些说明,第5行应保留(列"z"不为空白),第6行应保留(第1列和第2列的组合不重复).
如果是这种情况,这里有一种方法:
# Copy the data.frame, "sorting" by column "z"
mydf2 <- mydf[rev(order(mydf$z)), ]
# Subset according to your conditions
mydf2 <- mydf2[duplicated(mydf2[1:2]) & mydf2$z %in% "", ]
mydf2
# x y z
# 3 0.33 0.44
# 2 0.11 0.22
Run Code Online (Sandbox Code Playgroud)
^^这些是我们要删除的数据.删除它们的方法之一是使用setdiff在rownames每个数据集的:
mydf[setdiff(rownames(mydf), rownames(mydf2)), ]
# x y z
# 1 0.11 0.22 a
# 4 0.33 0.44 f
# 5 0.11 0.22 b
# 6 0.11 0.44
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |