首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在分组数据帧上生成“ecdf”

在分组数据帧上生成“ecdf”
EN

Stack Overflow用户
提问于 2019-02-04 15:06:49
回答 1查看 1.6K关注 0票数 3

如何从分组数据帧存储ecdf输出

大家好,

我的数据如下:

代码语言:javascript
复制
age lab  value  
20  wbc  7.0   
20  wbc  6.5
20  rbc  3.5
30  rbc  4.0
30  plt  100
30  plt  120
40  wbc  5.0
40  wbc  7.5
40  rbc  4.1
... ...  ...

我想为变量“值”生成和存储所有可能的“年龄”-“实验室”组合的ecdf。输出应该是"ecdf“对象的列表。我计划在以后的分析中使用这些ecdf,并将其应用于另一个数据集。

到目前为止我尝试过的是:

代码语言:javascript
复制
data %>% group_by(age,lab) %>% do(ecdf(.$value))

到目前为止还没有成功。我得到了:

代码语言:javascript
复制
Error: Results 1, 2, 3, 4, 5, ... must be data frames, not ecdf/stepfun/function

有什么想法吗?

解出

如果这对任何人都有帮助,我将原始数据帧分成两个因素,然后在第三列上使用lapply。

代码语言:javascript
复制
spl <- split(data, list(data$age, data$lab))
ecdfs <- lapply(spl, function(x) ecdf(x$value)
EN

回答 1

Stack Overflow用户

发布于 2019-02-04 15:09:35

我们可以用

代码语言:javascript
复制
library(dplyr)
data %>% 
  group_by(age, lab) %>%
  do(data.frame(., newval = ecdf(.$value)(.$value)))

或使用mutate

代码语言:javascript
复制
data %>% 
   group_by(age, lab) %>% 
   mutate(newval = ecdf(value)(value))
# A tibble: 9 x 4
# Groups:   age, lab [6]
#    age lab   value newval
#  <int> <chr> <dbl>  <dbl>
#1    20 wbc     7      1  
#2    20 wbc     6.5    0.5
#3    20 rbc     3.5    1  
#4    30 rbc     4      1  
#5    30 plt   100      0.5
#6    30 plt   120      1  
#7    40 wbc     5      0.5
#8    40 wbc     7.5    1  
#9    40 rbc     4.1    1  

更新

如果要将函数存储为列,则将其包装在list中。

代码语言:javascript
复制
data %>% 
    group_by(age, lab) %>% 
    mutate(ecdfFun = list(ecdf(value)))

它也可以是summarised

代码语言:javascript
复制
data %>%
   group_by(age, lab) %>%
   summarise(ecdfFun = list(ecdf(value)))

数据

代码语言:javascript
复制
data <- structure(list(age = c(20L, 20L, 20L, 30L, 30L, 30L, 40L, 40L, 
 40L), lab = c("wbc", "wbc", "rbc", "rbc", "plt", "plt", "wbc", 
 "wbc", "rbc"), value = c(7, 6.5, 3.5, 4, 100, 120, 5, 7.5, 4.1
 )), class = "data.frame", row.names = c(NA, -9L))
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54518977

复制
相关文章

相似问题

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