[英]Selecting rows of a data frame in R
考慮以下數據集。
id var1 var2
1 A 33
2 B 23
3 A 45
4 A 55
5 B 22
6 A 33
7 B 90
8 A 78
9 B 12
10 A 11
我想分別從A
和B
類別中抽取大小為5
和4
的隨機樣本(行)。 有人可以幫幫我嗎? 謝謝!
您可以使用sample
:
sample_1 <- sample(df[df$var1 == "A", ]$var2, 5)
sample_2 <- sample(df[df$var1 == "B", ]$var2, 4)
使用replace=TRUE
進行替換采樣。
數據
df <- read.table(text="id var1 var2
1 A 33
2 B 23
3 A 45
4 A 55
5 B 22
6 A 33
7 B 90
8 A 78
9 B 12
10 A 11", header=TRUE)
一個選項是split
數據集並使用Map
中的sample
do.call(rbind, Map(function(dat, y)
dat[sample(seq_len(nrow(dat)), size = y),], split(df, df$var1), c(5, 4)))
df <- structure(list(id = 1:10, var1 = c("A", "B", "A", "A", "B", "A",
"B", "A", "B", "A"), var2 = c(33L, 23L, 45L, 55L, 22L, 33L, 90L,
78L, 12L, 11L)), class = "data.frame", row.names = c(NA, -10L
))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.