【问题标题】:R studio: How to transform columns to multiple rows as factos [duplicate]R studio:如何将列转换为多行作为事实[重复]
【发布时间】:2020-10-23 06:15:04
【问题描述】:

我目前正在使用 RStudio,但遇到了一些问题。我研究了一些函数(reshapemergecombine 等),但无法解决我的问题。

我在excel中有这样的数据:

    ID_No Measurament_1 Measurament_2 Measurament_3 Measurament_4
1 a                1            2            3            4
2 b                5            6            7            8
3 c                10           20           30           40
4 d                60           70           80           90 

我想用这种方式改造它:

ID_No        Measurament
 1 a              1
 2 a              2
 3 a              3
 4 a              4
 5 b              5
 6 b              6
 7 b              7
 8 b              8
 9 c              10
10 c              20
11 c              30
12 c              40
13 d              60
14 d              70
15 d              80
16 d              90

你们能帮帮我吗?这个任务应该有一个简单的命令,但我不明白。

【问题讨论】:

    标签: r reshape transpose


    【解决方案1】:

    您可以尝试使用 df 您的数据框:

    library(reshape2)
    df2 <- melt(df,idvar='ID_No')
    

    【讨论】:

      【解决方案2】:

      还有 Tidyverse 的做法,它让您可以很好地控制要使哪些列变长而不是变宽:

      library(dplyr)
      library(tidyr)
      measurements <- data.frame(ID_No=c("a", "b", "c", "d"), 
                                 m_1=c(1,5,10,60),
                                 m_2=c(2, 6, 20, 70),
                                 m_3=c(3, 7, 30, 80),
                                 m_4=c(4, 8, 40, 90),
                                 stringsAsFactors = FALSE
      )
      measurements %>% pivot_longer(cols = starts_with("m_"),
                                    values_to = "Measurement")
      

      如果您还想跟踪它,这还会为您提供作为另一列的原始字段名称(m_1、m_2 等)。如果没有,您可以直接删除该列。

      【讨论】:

        猜你喜欢
        • 2016-09-22
        • 1970-01-01
        • 2022-01-02
        • 1970-01-01
        • 1970-01-01
        • 2016-11-19
        • 1970-01-01
        • 2017-05-09
        • 1970-01-01
        相关资源
        最近更新 更多