首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从向量创建数据

从向量创建数据
EN

Stack Overflow用户
提问于 2022-02-09 20:30:38
回答 2查看 95关注 0票数 0

在这里输入图像描述I有以下向量:

代码语言:javascript
复制
bid = c(1,5,10,20,30,40,50)
n = c(31,29,27,25,23,21,19)
yes = c(0,3,6,7,9,13,17)
no = n - yes

我有两个问题,但我没有找到任何解决办法,如果有人能帮助我,我将不胜感激。

Q1:我想编写R代码来创建一个两列df。第1列有 Bid ,其中每个出价重复n次数;第2列在每个出价E 213处有c(rep(1,yes),rep(0,no) )。

Q2:然后,当我有数据帧df时,我想编写R代码来生成(从df)向量出价,n,是,和否,再次。

EN

回答 2

Stack Overflow用户

发布于 2022-02-09 20:52:49

你到底想要什么还不太清楚。如果您提供了所需的结果,就更容易了。这是否适合您的Q1:

代码语言:javascript
复制
library(tidyverse)
bid = c(1,5,10,20,30,40,50)
n = c(31,29,27,25,23,21,19)
yes = c(0,3,6,7,9,13,17)
no = n - yes

df <- tibble(bid, yes, n, no = n -yes) %>% dplyr::select(- n) %>% pivot_longer(cols = c(yes, no)) %>%  uncount(value) %>% mutate(yesno = ifelse(name == "yes", 1,0)) %>% dplyr::select(-name)


df2 <- df %>% group_by(bid) %>% table() %>%  as.data.frame() %>% pivot_wider(id_cols = bid, names_from = yesno, values_from = Freq) %>% mutate(n = yes + no) %>% rename(no = `0`, yes = `1`)

bid <- df2$bid
n <- df2$n
yes <- df2$yes
票数 0
EN

Stack Overflow用户

发布于 2022-02-09 20:56:22

我不知道你对Q2意味着什么,但对于Q1,你可以这样做:

代码语言:javascript
复制
library(tidyverse)

pmap_dfr(list(bid, n, yes, no),
         \(V1, V2, V3, V4) tibble(col1 = rep(V1, V2),
                                  col2 = c(rep(1,V3),rep(0,V4))))
#> # A tibble: 175 x 2
#>     col1  col2
#>    <dbl> <dbl>
#>  1     1     0
#>  2     1     0
#>  3     1     0
#>  4     1     0
#>  5     1     0
#>  6     1     0
#>  7     1     0
#>  8     1     0
#>  9     1     0
#> 10     1     0
#> # ... with 165 more rows

编辑:对于Q2,您可以这样做:

代码语言:javascript
复制
library(tidyverse)

df <- pmap_dfr(list(bid, n, yes, no),
         \(V1, V2, V3, V4) tibble(col1 = rep(V1, V2),
                                  col2 = c(rep(1,V3),rep(0,V4))))

df2 <- df |>
  count(col1, col2) |>
  group_by(col1) |>
  summarise(yes = sum(n[col2==1]),
            n = sum(n))

bid2 <- df2$col1
n2 <- df2$n
yes2 <- df2$yes
no2 <- n2 - yes2

all.equal(c(bid, n, yes, no), c(bid2, n2, yes2, no2))
#> [1] TRUE
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71056308

复制
相关文章

相似问题

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