【发布时间】:2017-05-31 18:54:21
【问题描述】:
当列不匹配时,我需要对数据进行子集化。例如,如果我在第一列 X 中有一个标识符,例如 1,那么 Y 列中的以下所有示例都应该匹配:
X <- rep(1:4, times=2, each=2)
Y <- rep(c("Dave","Sam","Sam","Sam"))
Z <- as.data.frame(cbind(X,Y))
head(Z)
因此,在此示例中,我想在 X = 1 和 3 时对数据进行子集化,因为 y 列与第 2 列的子集不完全一致。为这种类型获取子集函数会很棒我在更大的数据帧上遇到的问题
谢谢,
【问题讨论】:
-
Z[Z$X %in% c(1,3),]? -
我希望能够为满足此条件的所有条件执行此操作,但这只是一个小的说明性示例,但谢谢。
-
你想要的输出是什么?
-
我用 sqldf 用下面的代码弄明白了:
AA <- sqldf("select X, count (distinct(Y)) as distinct_names From Z Group By X Having count (distinct(Y)) > 1 Order by X") AB <- Z %>% inner_join(AA) AB <- AB %>% select(X, Y) AB那样很笨拙,想看看它是否能更好地工作 -
好吧,如果它有效,请使用它。如果您想在没有 SQL 的情况下查看更多 R 方法,请参阅下面的答案。不确定哪个更有效。