如果您只与 2 个人打交道,则可以分别对每个人进行子集化,然后rbind
对每个子集进行 ing:
wloc08F07001 <- wloc08[which(wloc08$ID == "F07001")[1:500], ]
wloc08F07005 <- wloc08[which(wloc08$ID == "F07005")[1:500], ]
reduced <- rbind(wloc08F07001, wloc08F07005)
为了使其更通用,尤其是在处理大量数据时,您可能会考虑查看data.table
包。这是一个例子
library(data.table)
wloc08DT<-as.data.table(wloc08) # Create data.table
setkey(wloc08DT, "ID") # Set a key to subset on
# EDIT: A comment from Matthew Dowle pointed out that by = "ID" isn't necessary
# reduced <- wloc08DT[c("F07001", "F07005"), .SD[1:500], by = "ID"]
reduced <- wloc08DT[c("F07001", "F07005"), .SD[1:500]]
分解最后一步的语法:
c("F07001", "F07005")
:这将通过查找键等于F07001
或的所有行来子集您的数据F07005
。还会煽动“by without by”(详见?data.table
)
.SD[1:500]
:这将.SD
通过选择 1:500 行来子集对象(子集的 data.table)。
编辑由于 Matthew Dowle 的更正,此部分已被删除。“by without by”由第 1 步启动。以前:(by = "ID"
:这告诉[.data.table
您在第 2 步中对每个 ID 单独执行操作,在这种情况下,只有您在第 1 步中指定的 ID。)