【问题标题】:Taking a random sample of rows from a data frame in R. How do I use the rows that were not sampled?从 R 中的数据框中随机抽取行样本。如何使用未抽样的行?
【发布时间】:2017-03-14 02:08:31
【问题描述】:

从数据帧中随机抽取样本而不进行替换。我将该样本分配给一个新的数据框。我想使用该示例中剩余的行。

为了创建示例,我使用了:

telemarketing_sample <- telemarketing[sample(1:nrow(telemarketing), 30000, replace=FALSE),]

【问题讨论】:

  • 如果您知道您采用的行索引,只需根据您未采用的索引对原始数据框进行子集化。
  • 我有 40,000 多行。我不确定哪些被拿走了,哪些没有。我想可能会有一个函数可以比较两个数据帧,看看哪些行被取走,哪些没有被取走,然后取那些没有被取走的行。
  • 或许可以先记录行数,然后从从1开始到行数的序列中随机抽取样本。通过这样做,您将知道行索引。
  • 我不太清楚你的意思。你能改写一下吗? (顺便感谢您的帮助)
  • 将用于对行进行采样的代码表达式添加到您的问题中。

标签: r dataframe random


【解决方案1】:

通常,提供一些您已经尝试过的代码会有所帮助。与此同时,这样的事情应该可以工作:

#generate some toy data
x <- data.frame(id = 1:100, y = rep(c(0,1),50))

#get a sample of 10
samp <- sample(nrow(x),10)

#data in the sample
in <- x[samp,]

#data not in the sample
out <- x[-samp,]

【讨论】:

  • 这个答案很完美。如果您正在使用包dplyr,这也可以工作:out &lt;- dplyr::setdiff(x, in)`
  • (@mattysatty 不要道歉,只是为下次和可能看到问答的其他用户提供反馈:) 很高兴它有帮助!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
相关资源
最近更新 更多