首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将计数的数据帧转换为R中单个观测值的行

将计数的数据帧转换为R中单个观测值的行
EN

Stack Overflow用户
提问于 2019-07-09 02:49:32
回答 1查看 439关注 0票数 0

我有一个数据集,其中包含每个组织的观察值计数,我需要将其转换为每个观察值的单独行。我接近了melt(),但仍然不知道如何为每个观察值获取单独的行。我的数据是这样的:

代码语言:javascript
复制
df <- data.frame(org = c("A", "B", "C"),
                 var1 = c(2, 3, 1),
                 var2 = c(4, 6, 1),
                 var3 = c(0, 4, 2))

#   org var1 var2 var3
# 1   A    2    4    0
# 2   B    3    6    4
# 3   C    1    1    2

使用melt() get的me从宽到高的数据:

代码语言:javascript
复制
melt(df, id = "org")

#   org variable value
# 1   A     var1     2
# 2   B     var1     3
# 3   C     var1     1
# 4   A     var2     4
# ...

但我想要的输出是:

代码语言:javascript
复制
#    org variable
# 1    A     var1
# 2    A     var1
# 3    B     var1
# 4    B     var1
# 5    B     var1
# 6    C     var1
# 7    A     var2
# 8    A     var2
# 9    A     var2
# 10   A     var2
# ...

我在这个问题上遇到了困难,所以感谢大家在正确方向上的帮助/指示。

EN

回答 1

Stack Overflow用户

发布于 2019-07-09 02:57:10

代码语言:javascript
复制
library(tidyr)
library(dplyr)

df %>%
  gather(var, value, -org) %>% 
  group_by_all %>% 
  expand(value = 1:value) %>% 
  filter(value != 0) %>% 
  ungroup %>% 
  select(-value)

#> # A tibble: 24 x 2
#>    org   var  
#>    <fct> <chr>
#>  1 A     var1 
#>  2 A     var1 
#>  3 A     var2 
#>  4 A     var2 
#>  5 A     var2 
#>  6 A     var2 
#>  7 A     var3 
#>  8 B     var1 
#>  9 B     var1 
#> 10 B     var1 
#> # ... with 14 more rows
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56940935

复制
相关文章

相似问题

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