在R中标记相同参考号的其他出现

时间:2016-06-16 09:22:50

标签: r data.table

我有一个大型数据集,近百万个观察结果代表一个人。该人的每个动作都单独记录,但每个人都有一个唯一的参考号,用于识别它们。使用特定的特征我已经标记了某些行。我现在要做的是从列表中删除所有出现的参考号,甚至曾经被标记过。我使用的标志是二进制标志。

是R的业余爱好者。

我该怎么办?

2 个答案:

答案 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