[英]Select all rows based on conditions in two columns in R (multiple cases per row)
[英]Randomly select groups (and all cases per group) in R?
我有一個R數據框,具有兩個數據級別: id
和year
。 在由id
定義的組中,年份增加(整個數據集每個組具有相同的(數量)年,如下所示:
id year var1 var2
11A 2001 ... ...
11A 2002 ... ...
11A 2003 ... ...
11A 2004 ... ...
13B 2001 ... ...
13B 2002 ... ...
13B 2003 ... ...
13B 2004 ... ...
22Z 2001 ... ...
我的數據中有大約20.000個組,因為它們太多了,無法繪制出良好的增長曲線圖。 如何隨機選擇約20個ID? (因此:還要選擇對應於該ID的所有4行年份嗎?)
如果先使用sample
再進行索引,這將非常簡單。 這是一個偽造的示例,看起來與您所呈現的相似。 它實際上僅是兩行代碼,如果您願意的話,可以合而為一。
dat <- data.frame(id=paste0(LETTERS[1:8], rep(1:1250, 8)),
year=as.factor(as.character(sample(c(1990:2012, 20000, T)))),
var1=rnorm(20000), var2=rnorm(20000))
#a look at the data
head(dat)
#sample 20 id's randomly
(ids <- sample(unique(dat$id), 20))
#narrow your data set
dat2 <- dat[dat$id %in% ids, ]
subset(df, id %in% sample(levels(df$id), 20))
假設您的數據幀稱為df
,並且您的id
是一個因素(如果不是,則使用unique
而不是levels
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.