首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据从宽转换为长,其中‘length(Varying)’> 'length(times)‘

将数据从宽转换为长,其中‘length(Varying)’> 'length(times)‘
EN

Stack Overflow用户
提问于 2020-01-31 00:04:21
回答 1查看 58关注 0票数 0

我正在尝试将数据从df转换为df2。

代码语言:javascript
复制
> df
  part.id bl.rbc bl.serum bl.hp bl.epfa sm.rbc sm.serum sm.hp sm.epfa oy.rbc oy.serum oy.hp
1       1     NA       NA    NA      NA     NA       NA    NA      NA     NA       NA    NA
2       2     NA       NA    NA      NA     NA       NA    NA      NA     NA       NA    NA
3       3     NA       NA    NA      NA     NA       NA    NA      NA     NA       NA    NA
  oy.epfa
1      NA
2      NA
3      NA


> df2
  part.id timepoint rbc serum hp epfa
1       1        bl  NA    NA NA   NA
2       2        sm  NA    NA NA   NA
3       3        oy  NA    NA NA   NA

我尝试了重塑,但如果长度(变化)=4>长度(时间)= 3,我得到一个错误。我的实际情况涉及16个变化。

创建这些的代码:

代码语言:javascript
复制
part.id <- c(1,2,3)
bl.rbc <- NA
bl.serum <- NA
bl.hp <- NA
bl.epfa <- NA
sm.rbc <- NA
sm.serum <- NA
sm.hp <- NA
sm.epfa <- NA
oy.rbc <- NA
oy.serum <- NA
oy.hp <- NA
oy.epfa <- NA


df <- data.frame(part.id, 
                 bl.rbc, bl.serum, bl.hp, bl.epfa, 
                 sm.rbc, sm.serum, sm.hp, sm.epfa,
                 oy.rbc, oy.serum, oy.hp, oy.epfa)

timepoint <- c("bl", "sm", "oy")

rbc <- NA
serum <- NA
hp <- NA
epfa <- NA

df2 <- data.frame(part.id, timepoint, rbc, serum, hp, epfa)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-31 03:30:56

这与您的预期输出不匹配,但可能是您想要的结果?

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

df %>%
  rename_at(-1, ~ str_replace(., "(\\w+).(\\w+)", "\\2_\\1")) %>% 
  pivot_longer(-part.id, names_to = c(".value", "timepoint"), names_sep='_')

# A tibble: 9 x 6
  part.id timepoint rbc   serum hp    epfa 
    <dbl> <chr>     <lgl> <lgl> <lgl> <lgl>
1       1 bl        NA    NA    NA    NA   
2       1 sm        NA    NA    NA    NA   
3       1 oy        NA    NA    NA    NA   
4       2 bl        NA    NA    NA    NA   
5       2 sm        NA    NA    NA    NA   
6       2 oy        NA    NA    NA    NA   
7       3 bl        NA    NA    NA    NA   
8       3 sm        NA    NA    NA    NA   
9       3 oy        NA    NA    NA    NA 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59990002

复制
相关文章

相似问题

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