我正在为我的硕士论文处理一个非常混乱的数据集,我需要一些帮助,将值从一列复制到其他列。
我需要做的是:
H 210G 211所有公司和日期都需要这样做。因此,我需要为下一家公司做同样的程序。意思:
G 223/code>数据集太大,无法手工完成。但是,我认为在R中使用循环是可能的,因为“复制”在整个数据集中遵循相同的模式。如果是这样的话,我真的很希望得到一些解决这个问题的指导。谢谢!
在附图中,您可以看到我的数据是什么样子的。

发布于 2022-05-23 17:55:01
您所描述的是将您的数据从“长格式转换为宽格式”。搜索这个短语会在R中找到很多方法来实现这一点,这里有一个,您可以使用来自tidyr的pivot_wider(),如下所示:
(编辑后使用@Axeman建议的separate() )
library(dplyr)
library(tidyr)
df %>%
separate(col = "variable", into = c("company", "metric"), sep = " - ") %>%
pivot_wider(id_cols = c("company", "date"), names_from = "metric", values_from = "value")
#> company date Price Close High Price Price Low Opening price
#> 1 Company 1 2022-01-01 5.5 6.0 5.0 5.0
#> 2 Company 2 2022-01-01 3.5 7.0 8.0 1.0
#> 3 Company 1 2022-01-02 5.4 5.9 4.9 4.8
#> Common Shares Outstanding
#> 1 1000
#> 2 5000
#> 3 1000数据:
df <- data.frame(variable = c("Company 1 - Price Close",
"Company 1 - High Price",
"Company 1 - Price Low",
"Company 1 - Opening price",
"Company 1 - Common Shares Outstanding",
"Company 2 - Price Close",
"Company 2 - High Price",
"Company 2 - Price Low",
"Company 2 - Opening price",
"Company 2 - Common Shares Outstanding",
"Company 1 - Price Close",
"Company 1 - High Price",
"Company 1 - Price Low",
"Company 1 - Opening price",
"Company 1 - Common Shares Outstanding"),
date = c(rep("2022-01-01", 10), rep("2022-01-02", 5)),
value = c(5.5, 6, 5, 5, 1000,
3.5, 7, 8, 1, 5000,
5.4, 5.9, 4.9, 4.8, 1000))由reprex包在2022-05-23上创建(v2.0.1)
https://stackoverflow.com/questions/72352713
复制相似问题