楼主: RRRUP
5339 3

[问答] R语言 随机抽样 数据提取 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

大专生

10%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
1.0004
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
157 点
帖子
14
精华
0
在线时间
62 小时
注册时间
2018-12-20
最后登录
2020-6-6

楼主
RRRUP 发表于 2019-11-4 15:49:55 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
已知的数据为30组1-360之间各个方向的值(30*360),现在要从1到360之间随机抽取10个数,以这10个数为起始点,分别取步长为180(30*2)、120(30*3)、90(30*4)、60(30*6)、45(30*8)、22.5(30*16),也就是说根据随机抽样的数,按照不同步长,选择对应列的数据,请问应该如何编程?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:随机抽样 数据提取 R语言

沙发
zhou1_20 发表于 2019-11-5 09:18:48
  1. fun_sim = function(dt, start_id, steps){
  2.   
  3.   n = length(steps)
  4.   
  5.   res = vector('list', n)
  6.   
  7.   for (i in 1:n) {
  8.     col_id = lapply(start_id, function(x) seq(x, 360, steps[i]))
  9.     result = dt[,unlist(col_id)]
  10.     #如果想去掉重复id,用下面命令
  11.     #result = dt[,unique(unlist(col_id))]
  12.     res[[i]] = list(col_id, result)
  13.   }
  14.   names(res) = paste('start_id',start_id)
  15.   return(res)
  16. }

  17. dt = matrix(replicate(30,rnorm(360)),ncol = 360,byrow = T)

  18. start_id = sample(360,2)

  19. steps = c(20, 100)


  20. res = fun_sim(dt, start_id, steps)

  21. str(res)
复制代码
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
cheetahfly + 20 精彩帖子
Sunknownay + 3 + 3 + 3 热心帮助其他会员

总评分: 论坛币 + 20  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

藤椅
RRRUP 发表于 2019-11-26 14:56:17
非常感谢

板凳
RRRUP 发表于 2019-11-26 14:56:38
zhou1_20 发表于 2019-11-5 09:18
非常感谢

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-3 14:18