【问题标题】:Convert columns into rows, R data.frame [duplicate]将列转换为行,R data.frame [重复]
【发布时间】:2022-01-02 10:47:55
【问题描述】:

我想将每一列重复到一个新行中作为下一个示例:

Date<- c(seq(as.Date("2000/1/1"), by = "month", length.out = 3))
A<- c(seq(2,4,length.out=3))
B<- c(seq(20,40,length.out=3))

df <- (data.frame(Date,A,B))
df
        Date A  B
1 2000-01-01 2 20
2 2000-02-01 3 30
3 2000-03-01 4 40

我想要这个:

# Final dataframe
        Date  Site  Value
1 2000-01-01     A      2
2 2000-02-01     A      3
3 2000-03-01     A      4
4 2000-01-01     B     20
5 2000-02-01     B     30
6 2000-03-01     B     40

有这个功能吗?

【问题讨论】:

  • 按照建议,尝试类似pivot_longer(df, cols = c(A, B)) from tidyr

标签: r dataframe data.table reshape2 melt


【解决方案1】:

您可以使用reshape2::melt

library(dplyr)
library(reshape2)
library(stringr)

df %>%
  melt %>%
  mutate(Date = str_extract(variable, "[0-9]")) %>%
  select(-variable) %>%
  arrange(Site)

  Site value Date
1    A    10    1
2    A    30    2
3    B    20    1
4    B    40    2

【讨论】:

  • 您应该注意str_extract 的来源。为什么要从日期中提取单个字符?这会丢失可能重要的信息
  • @camille 谢谢你提醒我。我没有注意到 stringr :D
猜你喜欢
  • 2016-10-05
  • 2020-11-22
  • 2015-01-06
  • 1970-01-01
  • 2016-09-22
  • 2020-07-17
  • 2017-11-20
  • 2018-01-13
  • 1970-01-01
相关资源
最近更新 更多