如果你只處理2種人,你可以用單獨子集劃分每個脫身然後rbind
荷蘭國際集團各子集:
wloc08F07001 <- wloc08[which(wloc08$ID == "F07001")[1:500], ]
wloc08F07005 <- wloc08[which(wloc08$ID == "F07005")[1:500], ]
reduced <- rbind(wloc08F07001, wloc08F07005)
爲了使這更加普及,特別是如果你正在處理大量的數據,你可以考慮看data.table
帕茨卡GE。下面是一個例子
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
子集數據。它還將鼓動「通過而不會被」(見?data.table
的詳細信息)
.SD[1:500]
:500:這將通過選擇行1子集中的.SD
對象(子集data.table)。
編輯由於Matthew Dowle的更正,此部分被刪除。前面是:(by = "ID"
:這告訴[.data.table
對每個ID分別執行步驟2中的操作,在這種情況下,僅顯示步驟1中指示的ID。)
謝謝!有什麼辦法讓這個更一般嗎?那麼,可以說我不想僅指定2個人,而是30個,並從每個人中挑選一個子集?我需要輸入全部30個名字嗎?或者我可以做一些像lapply(wloc08 [wloc08 $ ID [1:30]]),函數(x)..... – Kerry
如果要爲前30個主題運行此命令,可以使用'unique(wloc08 $ ID)[1:30]'而不是'c(「F07001」,「F07005」)'。 –
酷!我刪除了我以前的評論,以避免未來的混淆。 – BenBarnes