首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为每个ID创建指定数量的观测值

为每个ID创建指定数量的观测值
EN

Stack Overflow用户
提问于 2019-06-11 00:05:33
回答 3查看 32关注 0票数 0

我有一个数据集,其中指定了每个人的记录数:

代码语言:javascript
运行
复制
set.seed(99)
# Create values from a Poisson distribution
freqs <- rpois(100, 3) 
# Add an ID to each row
freqs <- as.data.frame(freqs)
freqs$id <- seq_len(nrow(freqs))

现在我希望freqs$freqs中的值是每个ID的观察值。

代码语言:javascript
运行
复制
ID    freqs
1      3
2      1
...    ...
3      2

结果是:

代码语言:javascript
运行
复制
ID    freqs
1      3
1      3
1      3
2      1
...    ....
3      2
3      2
EN

回答 3

Stack Overflow用户

发布于 2019-06-11 00:08:27

一个选项是来自tidyruncount

代码语言:javascript
运行
复制
library(tidyr)
library(dplyr)
uncount(freqs, freqs, .remove = FALSE)  %>% 
        as_tibble %>% 
        select(id, freqs)
票数 2
EN

Stack Overflow用户

发布于 2019-06-11 00:16:35

获取ids的另一个tidyverse选项:

代码语言:javascript
运行
复制
plyr::ldply(purrr::map2(freqs$id,freqs$freqs,function(x,y) rep(x,y)),
            data.frame) 
票数 2
EN

Stack Overflow用户

发布于 2019-06-11 00:24:11

代码语言:javascript
运行
复制
as.data.frame(lapply(freqs, rep, freqs$freqs))

#     freqs id
# 1       3  1
# 2       3  1
# 3       3  1
# 4       1  2
# 5       4  3
# 6       4  3
# 7       4  3
# 8       4  3
# 9       8  4
# 10      8  4
# 11      8  4
# 12      8  4
# 13      8  4
# 14      8  4
# 15      8  4
# 16      8  4  
# ...

代码语言:javascript
运行
复制
purrr::map_dfr(freqs, rep, freqs$freqs)

# # A tibble: 293 x 2
#    freqs    id
#    <int> <int>
#  1     3     1
#  2     3     1
#  3     3     1
#  4     1     2
#  5     4     3
#  6     4     3
#  7     4     3
#  8     4     3
#  9     8     4
# 10     8     4
# # ... with 283 more rows
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56529845

复制
相关文章

相似问题

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