首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在R中选择要透视到dataframe中的行的列

如何在R中选择要透视到dataframe中的行的列
EN

Stack Overflow用户
提问于 2021-02-19 02:31:04
回答 1查看 51关注 0票数 0

我有一个复杂的数据框架,我想从宽到长。每一行都有一列患者ID,其余列是患者的药物及其详细信息(例如,药物剂量、单位等)。然而,病人正在进行的所有干预都是在一个很长的序列中进行的。

代码语言:javascript
运行
复制
            patient_id <- c(1,2)
             med1_name <- c("Drug Alpha","Drug Beta")
             med1_dose <- c(50,100)
             med1_unit <- c("mg","mg")
             med1_schedule <- c("Twice a Day","Once a Day")
             med1_route <- c("Oral","Oral")
             med1_startdate <-c(07/08/2015,08/08/2015)
             med1_enddate <- c(07/08/2020,08/08/2020)
             med2_name <- c("Drug Gamma","Drug Delta")
             med2_dose <- c(125,80)
             med2_unit <- c("mg","g")
             med2_schedule <- c("When needed","Once a Day")
             med2_route <- c("Oral","Oral")
             med2_startdate <-c(07/08/2015,08/08/2015)
             med2_enddate <- c(07/08/2020,08/08/2020)
             patientmedslist <- data.frame(patient_id,med1_name,med1_dose,med1_unit,med1_schedule,med1_route,med1_startdate,med1_enddate,med2_name,med2_dose,med2_unit,med2_schedule,med2_route,med2_startdate,med2_enddate)                

我想将每7列的内容旋转到一个新的行中(本质上,第2-8列被标记为"med1_name“、"med1_dose”、"med1_unit“等,第9-16列是"med2_name”、"med2_dose“、"med2_unit”等)。这些长列名不会改变,并且每个药物始终有7列数据。

我已经尝试了以下pivot_longer代码:

代码语言:javascript
运行
复制
splitter = pivot_longer (patientmedslist,
                         cols =med1_name:med100_ongoing,
                         names_to=c("name","dose","unit","schedule","route","prestudy","startdate","enddate","ongoing"),
                         names_sep = "_",
                        values_to =c("name","dose","unit","schedule","route","prestudy","startdate","enddate","ongoing")
)

它会给我一条关于丢失部件的错误信息。

会非常感谢任何人的帮助。

EN

回答 1

Stack Overflow用户

发布于 2021-02-19 02:38:19

也许我们可以利用

代码语言:javascript
运行
复制
library(tidyr)
pivot_longer(patientmedslist, cols = -patient_id, 
    names_to = c('group', '.value'), names_sep='_')

-output

代码语言:javascript
运行
复制
# A tibble: 4 x 9
#  patient_id group name        dose unit  schedule    route startdate  enddate
#       <dbl> <chr> <chr>      <dbl> <chr> <chr>       <chr>     <dbl>    <dbl>
#1          1 med1  Drug Alpha    50 mg    Twice a Day Oral   0.000434 0.000433
#2          1 med2  Drug Gamma   125 mg    When needed Oral   0.000434 0.000433
#3          2 med1  Drug Beta    100 mg    Once a Day  Oral   0.000496 0.000495
#4          2 med2  Drug Delta    80 g     Once a Day  Oral   0.000496 0.000495
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66266019

复制
相关文章

相似问题

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