首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按组对列应用函数

按组对列应用函数
EN

Stack Overflow用户
提问于 2017-03-11 17:49:48
回答 1查看 59关注 0票数 0

我想根据数据类别对数据集应用一个函数。给定以下数据框架

代码语言:javascript
复制
pet <- c(rep("cat",5),rep("dog",5))
year <- c(rep(1991:1995,2))
karma <- c(5,4,1,1,1,6,4,3,2,6)
df <- data.frame(pet,year,karma)

看上去像这样

代码语言:javascript
复制
   pet year karma
1  cat 1991     5
2  cat 1992     4
3  cat 1993     1
4  cat 1994     1
5  cat 1995     1
6  dog 1991     6
7  dog 1992     4
8  dog 1993     3
9  dog 1994     2
10 dog 1995     6

我希望每年对业力列进行操作。如果我想应用像sum这样的函数,这可以通过ddply实现:

代码语言:javascript
复制
ddply(df, .(year),summarize, sum(karma))

例如,如何将其应用于我自己编写的函数?

代码语言:javascript
复制
calc <- function(d,c){(d*5+c*7)/12}

其中d是与狗每年的业力相对应的值,c对应于猫的业力。

理想情况下,我希望在此数据框架中再附加五个条目,并将其与宠物放在一起,一年和业力值由上面的函数计算。这样做最好的方法是什么?

(如果这是微不足道的话,我非常抱歉,但这次我真的找不到类似的问题。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-11 18:02:24

您可以使用spread将数据帧设置为宽,然后使用mutate实现您的函数。

代码语言:javascript
复制
library('tidyr')
library('dplyr')
df %>% 
 spread(pet, karma, drop = FALSE) %>% 
 mutate(karma = calc(dog, cat), pet = "both") %>% 
 select(year, pet, karma) %>%
 rbind(df)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42738564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档