gpt4 book ai didi

reshape 列名中有年份的数据框

转载 作者:行者123 更新时间:2023-12-02 08:01:39 24 4
gpt4 key购买 nike

我正在尝试将 R 中的宽数据帧 reshape 为长数据帧。阅读 reshape2tidyr 中的一些函数,如果您有 1 个要拆分的变量,它们似乎都可以处理,而我有 ~10 个。每列都有类型变量名称和年份,我希望它拆分,以便年份成为每一行中的一个因素,然后列数明显减少,数据集更容易使用。

目前表格看起来像这样。

 State  Rank  Name     V1_2016  V1_2017  V1_2018  V2_2016  V2_2017  V2_2018 
TX 1 Company 1 2 3 4 5 6

我曾尝试使用 reshape2 融化数据,但结果看起来像垃圾,而且是 127k 行,而实际上应该只有 10k 左右。

我正在尝试让数据看起来像这样。

  State Rank    Name Year V1 V2
1 TX 1 Company 2016 1 4
2 TX 1 Company 2017 2 5
3 TX 1 Company 2018 3 6

最佳答案

data.table 中带有 melt 的选项可以根据 patterns 中的measure列名

library(data.table)
nm1 <- unique(sub(".*_", "", names(df)[-(1:3)]))
melt(setDT(df), measure = patterns("V1", "V2"),
value.name = c("V1", "V2"), variable.name = "Year")[,
Year := nm1[Year]][]
# State Rank Name Year V1 V2
#1: TX 1 Company 2016 1 4
#2: TX 1 Company 2017 2 5
#3: TX 1 Company 2018 3 6

数据

df <- structure(list(State = "TX", Rank = 1L, Name = "Company", V1_2016 = 1L, 
V1_2017 = 2L, V1_2018 = 3L, V2_2016 = 4L, V2_2017 = 5L, V2_2018 = 6L),
class = "data.frame", row.names = c(NA,
-1L))

关于 reshape 列名中有年份的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56467814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com