我有一个大型数据集,近百万个观察结果代表一个人。该人的每个动作都单独记录,但每个人都有一个唯一的参考号,用于识别它们。使用特定的特征我已经标记了某些行。我现在要做的是从列表中删除所有出现的参考号,甚至曾经被标记过。我使用的标志是二进制标志。
是R的业余爱好者。
我该怎么办?
答案 0 :(得分:2)
你可以做到
DT[, if (all(!flagged)) .SD, by=id]
# or
DT[, .SD[all(!flagged)], by=id]
仅保留没有标记的ID。
答案 1 :(得分:0)
您可以在数据框中使用subset
。我冒昧为你的案例生成一个测试数据框。
# 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))
原始数据框:
> dataframe
id flag data
1 1 1 999
2 2 0 999
3 3 1 999
4 4 0 999
5 5 0 999
结果:
> selecteddata
id flag data
1 1 1 999
3 3 1 999