亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從數據幀分層隨機抽樣

從數據幀分層隨機抽樣

叮當貓咪 2019-08-19 15:33:18
從數據幀分層隨機抽樣我有一個格式的數據框:head(subset)# ants  0 1 1 0 1 # age   1 2 2 1 3# lc    1 1 0 1 0我需要根據年齡和lc創建帶有隨機樣本的新數據框。例如,我想要30個年齡的樣本:1和lc:1,30個樣本來自年齡:1和lc:0等。我確實看過隨機抽樣方法;newdata <- function(subset, age, 30)但這不是我想要的代碼。
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

我建議使用stratified我的“splitstackshape”包或sample_n“dplyr”包:


## Sample data

set.seed(1)

n <- 1e4

d <- data.table(age = sample(1:5, n, T), 

                lc = rbinom(n, 1 , .5),

                ants = rbinom(n, 1, .7))

# table(d$age, d$lc)

對于stratified,您基本上指定數據集,分層列和表示每個組所需大小的整數或表示要返回的分數的小數(例如,.1表示每組的10%)。


library(splitstackshape)

set.seed(1)

out <- stratified(d, c("age", "lc"), 30)

head(out)

#    age lc ants

# 1:   1  0    1

# 2:   1  0    0

# 3:   1  0    1

# 4:   1  0    1

# 5:   1  0    0

# 6:   1  0    1


table(out$age, out$lc)

#    

#      0  1

#   1 30 30

#   2 30 30

#   3 30 30

#   4 30 30

#   5 30 30

對于sample_n首先要創建一個分組表(使用group_by),然后指定想要觀測次數。如果你想要比例取樣,你應該使用sample_frac。


library(dplyr)

set.seed(1)

out2 <- d %>%

  group_by(age, lc) %>%

  sample_n(30)


# table(out2$age, out2$lc)


查看完整回答
反對 回復 2019-08-19
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

我建議使用stratified我的“splitstackshape”包或sample_n“dplyr”包:


## Sample data

set.seed(1)

n <- 1e4

d <- data.table(age = sample(1:5, n, T), 

                lc = rbinom(n, 1 , .5),

                ants = rbinom(n, 1, .7))

# table(d$age, d$lc)

對于stratified,您基本上指定數據集,分層列和表示每個組所需大小的整數或表示要返回的分數的小數(例如,.1表示每組的10%)。


library(splitstackshape)

set.seed(1)

out <- stratified(d, c("age", "lc"), 30)

head(out)

#    age lc ants

# 1:   1  0    1

# 2:   1  0    0

# 3:   1  0    1

# 4:   1  0    1

# 5:   1  0    0

# 6:   1  0    1


table(out$age, out$lc)

#    

#      0  1

#   1 30 30

#   2 30 30

#   3 30 30

#   4 30 30

#   5 30 30

對于sample_n首先要創建一個分組表(使用group_by),然后指定想要觀測次數。如果你想要比例取樣,你應該使用sample_frac。


library(dplyr)

set.seed(1)

out2 <- d %>%

  group_by(age, lc) %>%

  sample_n(30)


# table(out2$age, out2$lc)


查看完整回答
反對 回復 2019-08-19
  • 2 回答
  • 0 關注
  • 647 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號