楼主: ltxmu
5269 16

[实际应用] 根据最大值取对应的数据 [推广有奖]

  • 0关注
  • 0粉丝

高中生

35%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
224 点
帖子
10
精华
0
在线时间
43 小时
注册时间
2018-4-8
最后登录
2022-4-22

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好!我手头上有一部分数据,如图A.ID相同的代表同一个人,对应后面好几个不同时期的数据
我想根据B.PREGNANCY_WEEK_DAY这一列数据里面最大的,取出A.ID相同的这几条记录里面的其他列数据

如前四个A.ID是一样的,我想取出的是239,58,52,163

感谢各位大神!



二维码

扫码加我 拉你入群

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

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

关键词:最大值 pregnancy Nancy Week 部分数据

1523177705(1).jpg (8.26 KB)

1523177705(1).jpg

回帖推荐

fdsasdfddsa 发表于15楼  查看完整内容

上面的错误我不是很清楚怎么发生的,可能要提供完整代码 不过重新看了一下,发现之前误解了你的描述。你是要依据B这一行的最大值取出整行;而我之前的代码把除了A.ID的每一列都求了最大值后返回回来。 下面是修改后的代码,加了一点注释。如果有问题再问 [/backcolor] 注:上面每一个引号的列名都要换成你自己的。 经管之家的网站发$会出错,只好用各种带逗号和引号的中括号来代替

fdsasdfddsa 发表于4楼  查看完整内容

看看是不是你要的 #编造的数据 id=c(1,1,2,2,1) b=c(1,2,3,4,5) c=c(5,6,7,8,9) test=data.frame(cbind(id,b,c)) #处理代码 find_col_max=function(x) tapply(x,id,FUN = max) #把id改成你存放的人编号的变量 apply(test,MARGIN = 2,find_col_max) #把test改成你的data frame变量
沙发
zhou1_20 发表于 2018-4-8 17:41:37 |只看作者 |坛友微信交流群
是不是这个意思呢
  1. ddt = data.frame(id=sample(1:3,10,replace = T),
  2.                  var1=rgamma(10,2,1),
  3.                  var2=rnorm(10),
  4.                  var3=runif(10))

  5. ##根据var1最大的来取
  6. ddt[ddt$id==ddt[ddt$var1==max(ddt$var1),]$id,]
复制代码
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

使用道具

藤椅
zhou1_20 发表于 2018-4-8 17:41:59 |只看作者 |坛友微信交流群
ddt = data.frame(id=sample(1:3,10,replace = T),
                 var1=rgamma(10,2,1),
                 var2=rnorm(10),
                 var3=runif(10))

##根据var1最大的来取
ddt[ddt$id==ddt[ddt\$var1==max(ddt\$var1),]\$id,]

使用道具

板凳
fdsasdfddsa 发表于 2018-4-8 18:19:03 |只看作者 |坛友微信交流群
看看是不是你要的

#编造的数据
id=c(1,1,2,2,1)
b=c(1,2,3,4,5)
c=c(5,6,7,8,9)
test=data.frame(cbind(id,b,c))
#处理代码
find_col_max=function(x) tapply(x,id,FUN = max) #把id改成你存放的人编号的变量
apply(test,MARGIN = 2,find_col_max) #把test改成你的data frame变量
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

使用道具

报纸
ltxmu 发表于 2018-4-9 16:27:56 |只看作者 |坛友微信交流群
zhou1_20 发表于 2018-4-8 17:41
是不是这个意思呢
不好意思,我好像没明白您的意思?

使用道具

地板
ltxmu 发表于 2018-4-9 16:28:28 |只看作者 |坛友微信交流群
fdsasdfddsa 发表于 2018-4-8 18:19
看看是不是你要的

#编造的数据
您这串代码我试了,好像不行,不知道是不是我理解错了?

使用道具

7
fdsasdfddsa 发表于 2018-4-10 14:39:49 |只看作者 |坛友微信交流群
看我图上的运行结果
剪贴板图片 (1).jpg
按我的理解,id=1的人对应的b有1,2,5,所以取出5;c有5,6,9,所以取出9;
id=2的人对应b=3,4,取4;对应的c为7,8,所以取8
你的运行结果是什么

使用道具

8
ltxmu 发表于 2018-4-16 12:04:44 |只看作者 |坛友微信交流群
fdsasdfddsa 发表于 2018-4-10 14:39
看我图上的运行结果

按我的理解,id=1的人对应的b有1,2,5,所以取出5;c有5,6,9,所以取出9;

使用道具

9
ltxmu 发表于 2018-4-16 12:06:07 |只看作者 |坛友微信交流群
fdsasdfddsa 发表于 2018-4-10 14:39
看我图上的运行结果

按我的理解,id=1的人对应的b有1,2,5,所以取出5;c有5,6,9,所以取出9;

使用道具

10
ltxmu 发表于 2018-4-16 12:09:39 |只看作者 |坛友微信交流群
我的结果是这样

1523851306(1).jpg (13.01 KB)

1523851306(1).jpg

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-23 01:52