全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3582 6
2018-12-24
比如对鸢尾花数据
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2 setosa
2          4.9         3.0          1.4         0.2 setosa
3          4.7         3.2          1.3        0.2  setosa
4          4.6         3.1          1.5         0.2 setosa
5          5.0         3.6          1.4         0.2 setosa
6          5.4         3.9          1.7         0.4 setosa


想同时知道Sepal.Length的最大值,Sepal.Width 的最小值和Petal.Length 的和或者更复杂一点的计算
二维码

扫码加我 拉你入群

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

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

全部回复
2018-12-24 14:45:54
用aggregate只能对不同列用同样的计算,能实现对不同列用不同计算么
二维码

扫码加我 拉你入群

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

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

2018-12-24 14:51:31
目前只能想到对每列分类统计一下,然后再合并数据集了

# 获取首次使用起始时间、末次使用结束时间和全天使用时间
  temp_start = aggregate(x = dat[,4], by= list(dat[,1], dat[,2]), FUN = min)
  temp_end = aggregate(x = dat[,5], by= list(dat[,1], dat[,2]), FUN = max)
  temp_duration = aggregate(x = dat[,6], by= list(dat[,1], dat[,2]), FUN = sum)
  
  # 整理数据
  names(temp_start) = c("uid", "appid", paste("start_time", chrx, sep = ''))
  names(temp_end) = c("uid", "appid", paste("end_time", chrx, sep = ''))
  names(temp_duration) = c("uid", "appid", paste("duration", chrx, sep = ''))
  
  dat = merge(temp_start, temp_end, by = c("uid", "appid"))
  dat = merge(dat, temp_duration, by = c("uid", "appid"))
二维码

扫码加我 拉你入群

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

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

2018-12-24 16:04:04
找到解决方法了
library(plyr)

ddply(iris,.(Species),summarise,sum.a=sum(Sepal.Length),mean.c=(Sepal.Width),sd=ad(Petal.Length))
二维码

扫码加我 拉你入群

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

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

2018-12-24 16:57:21
可以用plyr的升级版tidyverse
二维码

扫码加我 拉你入群

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

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

2018-12-24 19:12:31
johnmy 发表于 2018-12-24 16:57
可以用plyr的升级版tidyverse
    谢 谢
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群