首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dplyr在最小间隔和最大间隔之间按组创建值序列

使用dplyr在最小间隔和最大间隔之间按组创建值序列
EN

Stack Overflow用户
提问于 2019-12-20 06:14:22
回答 1查看 602关注 0票数 0

这当然是一个基本的问题,但找不到解决的方法。

我需要为每个组(fs)创建一个从最小值(dds_min)到最大值(dds_max)的值序列。这是我的数据:

代码语言:javascript
复制
fs <- c("early", "late")
dds_min <-as.numeric(c("47.2", "40"))
dds_max <-as.numeric(c("122", "105"))
dds_min.max <-as.data.frame(cbind(fs,dds_min, dds_max))

这就是我所做的……

代码语言:javascript
复制
dss_levels <-dds_min.max %>% 
                group_by(fs) %>% 
                mutate(dds=seq(dds_min,dds_max,length.out=100))

我打算创建一个新的变量(dds),它的长度必须为100,并且根据"fs“在不同的值上开始和结束。我的期望是以另一个包含两列(fs和dds)、200个值的数据帧(dss_levels)结束。

但是我得到了这个错误。

代码语言:javascript
复制
Error: Column `dds` must be length 1 (the group size), not 100
In addition: Warning messages:
1: In Ops.factor(to, from) : ‘-’ not meaningful for factors
2: In Ops.factor(from, seq_len(length.out - 2L) * by) :
  ‘+’ not meaningful for factors

任何帮助都将不胜感激。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-20 06:21:26

出于说明的目的,我将序列长度设为5,您可以将其更改为100。

代码语言:javascript
复制
library(purrr)
library(tidyr)
dds_min.max %>%
  mutate(dds= map2(dds_min, dds_max, seq, length.out = 5)) %>%
  unnest(cols = dds)
# # A tibble: 10 x 4
#    fs    dds_min dds_max   dds
#    <fct>   <dbl>   <dbl> <dbl>
#  1 early    47.2     122  47.2
#  2 early    47.2     122  65.9
#  3 early    47.2     122  84.6
#  4 early    47.2     122 103. 
#  5 early    47.2     122 122  
#  6 late     40       105  40  
#  7 late     40       105  56.2
#  8 late     40       105  72.5
#  9 late     40       105  88.8
# 10 late     40       105 105  

使用此数据(请确保您的数值列是数值列!不要使用cbind!)

代码语言:javascript
复制
fs <- c("early", "late")
dds_min <-c(47.2, 40)
dds_max <-c(122, 105)
dds_min.max <-data.frame(fs,dds_min, dds_max)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59417536

复制
相关文章

相似问题

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