【发布时间】:2020-02-12 05:42:15
【问题描述】:
我有一个如下所示的数据框:
df <- data.frame(ID = c(1,2,3,4,5,6), Type = c("A","A","B","B","C","C"), `2019` = c(1,2,3,4,5,6),`2020` = c(2,3,4,5,6,7), `2021` = c(3,4,5,6,7,8))
ID Type X2019 X2020 X2021
1 1 A 1 2 3
2 2 A 2 3 4
3 3 B 3 4 5
4 4 B 4 5 6
5 5 C 5 6 7
6 6 C 6 7 8
现在,我正在寻找一些执行以下操作的代码: 1.为df中的每一行创建一个新的data.frame 2.用“ID”和“类型”(A_1,A_2,...,C_6)的组合命名新的数据帧
生成的新数据帧应如下所示(A_1、A_2 和 C_6 的示例):
Year Values
1 2019 1
2 2020 2
3 2021 3
Year Values
1 2019 2
2 2020 3
3 2021 4
Year Values
1 2019 6
2 2020 7
3 2021 8
我有一些使代码复杂化的事情: 1. 代码在接下来的几年内应该可以正常工作,没有任何变化,这意味着明年 data.frame df 将不再包含 2019-2021 年,而是 2020-2022 年。 2. 由于 data.frame df 只是一个最小的可重现示例,我需要某种循环。在“真实”数据中,我有更多的行,因此要创建更多的数据框。
很遗憾,我不能给你任何代码,因为我完全不知道如何管理它。 在研究过程中,我发现以下代码可能有助于解决岁月变化的第一个问题:
year <- as.numeric(format(Sys.Date(), "%Y"))
此外,我阅读了有关列表的信息,它可能有助于在 for 循环中使用列表,然后将列表转换回数据框。抱歉我的方法有限,我希望任何人都可以给我一个提示,甚至解决我的问题。如果您需要任何进一步的信息,请告诉我。提前致谢!
一个和我类似的问题: Populating a data frame in R in a loop
【问题讨论】: