标记R中相同参考号的其他出现
我有一个很大的数据集,将近一百万个观察值代表一个人。每个人的每个动作都会单独记录,但每个人都有一个唯一的参考号,用于识别他们。使用一个特定的特征,我标记了某些行。我现在要做的是从列表中删除该参考号的所有引用,该列表甚至曾经被标记过。我使用的标志是二进制标志 我是R的业余爱好者标记R中相同参考号的其他出现,r,data.table,R,Data.table,我有一个很大的数据集,将近一百万个观察值代表一个人。每个人的每个动作都会单独记录,但每个人都有一个唯一的参考号,用于识别他们。使用一个特定的特征,我标记了某些行。我现在要做的是从列表中删除该参考号的所有引用,该列表甚至曾经被标记过。我使用的标志是二进制标志 我是R的业余爱好者 如何继续?您可以在数据框上使用子集。我冒昧地为您的案例生成了一个测试数据帧 # Just for generating the test data for demo purposes. dataframe <- da
如何继续?您可以在数据框上使用
子集。我冒昧地为您的案例生成了一个测试数据帧
# Just for generating the test data for demo purposes.
dataframe <- data.frame(1:5)
dataframe <- cbind(dataframe,c(1,0,1,0,0),rep(999,5))
colnames(dataframe) <- c("id","flag","data")
# Subset the data frame according to the flag.
selecteddata <- subset(dataframe, as.logical(dataframe$flag))
结果是:
> selecteddata
id flag data
1 1 1 999
3 3 1 999
你能行
DT[, if (all(!flagged)) .SD, by=id]
# or
DT[, .SD[all(!flagged)], by=id]
只保留没有标志的ID。请阅读有关和如何提供标志的信息。这将使其他人更容易帮助您。例如:df1[df1$id%in%unique(df1[df1$flag!=“flagged”,“id”]),]
Yes,我理解子集部分,但id在某些情况下是相同的,我希望删除具有相同id的所有观察实例,即使只标记了其中一个。我希望最终使用“having”参数使语法变得更自然。目前有一个开放的(可能是低优先级的)FR
DT[, if (all(!flagged)) .SD, by=id]
# or
DT[, .SD[all(!flagged)], by=id]