楼主: 5752
2133 5

[问答] 循环取子集怎么写? [推广有奖]

  • 1关注
  • 2粉丝

已卖:402份资源

讲师

53%

还不是VIP/贵宾

-

威望
0
论坛币
5513 个
通用积分
106.8498
学术水平
5 点
热心指数
6 点
信用等级
3 点
经验
14009 点
帖子
181
精华
0
在线时间
720 小时
注册时间
2015-9-9
最后登录
2025-5-22

楼主
5752 发表于 2018-6-12 21:55:37 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如下数据
t1t2t3t4

1

Aa

1

Ab

1

Ac

2

Aa

2

Ab

2

Ac

3

Aa

3

Ab

3

Ac

1

Aa

1

Ab

1

Ac

2

Aa

2

Ab

2

Ac

3

Aa

3

Ab

3

Ac

1

Aa

1

Ab

1

Ac

2

Aa

2

Ab

2

Ac

3

Aa

3

Ab

3

Ac

1

Ba

1

Bb

1

Bc

2

Ba

2

Bb

2

Bc

3

Ba

3

Bb

3

Bc

1

Ba

1

Bb

1

Bc

2

Ba

2

Bb

2

Bc

3

Ba

3

Bb

3

Bc

1

Ba

1

Bb

1

Bc

2

Ba

2

Bb

2

Bc

3

Ba

3

Bb

3

Bc

1

Ca

1

Cb

1

Cc

2

Ca

2

Cb

2

Cc

3

Ca

3

Cb

3

Cc

1

Ca

1

Cb

1

Cc

2

Ca

2

Cb

2

Cc

3

Ca

3

Cb

3

Cc

1

Ca

1

Cb

1

Cc

2

Ca

2

Cb

2

Cc

3

Ca

3

Cb
第一步
选取1水平的,甲Aa,乙Aa,丙Aa,子集进行一番操作,得到结果 q1
第二步, 甲Ab,乙Ab,丙Ab,子集得到q2,
第二步, 甲Ac,乙Ac,丙Ac,得到q3,

然后
2水平的,
         甲Aa,乙Aa,丙Aa,子集进行一番操作,得到结果 p1,p2,p3

3水平的同理 ,得到结果w1,w2,w3,

最后所有结果粘在一起,如何写循环?


二维码

扫码加我 拉你入群

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

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

关键词:如何写 在一起

沙发
5752 发表于 2018-6-14 20:08:49
顶上去

藤椅
watone 发表于 2018-6-16 16:02:28
R里面尽力少用循环, 最好用*pply 这些函数,或者 用 这个 map 都会好很多 速度上。

  1. library(tidyverse)

  2. mtcars %>%
  3.     group_by(am) %>%  # 相当于 1,2,3 你的数据里的
  4.     nest() %>%  # 按照 1,2,3 分割了数据
  5.     mutate(data_m = map(data,
  6.                         ~ group_by(.x, vs) %>%
  7.                             summarise(mpg_max = max(mpg)))) %>%  # 对单个数据集 data 操作 变成了 data_m
  8.     select(-data) %>%  # 删除原来的 data 集
  9.     unnest(data_m)  # 把 操作完的数据集展开 放在一起
复制代码
已有 1 人评分经验 收起 理由
刘彦楼 + 100 热心帮助其他会员

总评分: 经验 + 100   查看全部评分

板凳
BG4IMP 发表于 2018-6-17 09:30:06
#----------------------------------------------------
# 数据集比较规则,可以直接取得子集
# 设原数据集为data
# 按如下方式,可以取得4列内容的任意组合:

a=unique(data[,1])
b=unique(data[,2])
c=unique(data[,3])
d=unique(data[,4])


for(a in a)
for(b in b)
for(c in c)
for(d in d)
   {
       newdata=data[data[,1]==a & data[,2]==b & data[,3]==c & data[,4]==d ,]
       write.csv(newdata,paste(a,b,c,d,".csv"))       #此处可以根据需要选择输出
   }

已有 1 人评分经验 收起 理由
刘彦楼 + 100 热心帮助其他会员

总评分: 经验 + 100   查看全部评分

报纸
5752 发表于 2018-6-19 09:47:00
BG4IMP 发表于 2018-6-17 09:30
#----------------------------------------------------
# 数据集比较规则,可以直接取得子集
# 设原数据 ...
还没看明白,我研究研究,谢谢

地板
5752 发表于 2018-6-19 09:47:21
watone 发表于 2018-6-16 16:02
R里面尽力少用循环, 最好用*pply 这些函数,或者 用 这个 map 都会好很多 速度上。
还没看明白,我研究研究,谢谢

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

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