gpt4 book ai didi

r - 使用 grep 函数在 R 中正确转换数据

转载 作者:行者123 更新时间:2023-12-01 12:50:47 29 4
gpt4 key购买 nike

我正在尝试根据特定列(即“向上”和“向下”)中的值 reshape 我的数据。 Up 和 Down 在数据框中的顺序不同,因此我很难将数据“转换”为正确的形状。

我试过使用转换函数来移动数据,但我无法得到以一致(又名准确)的方式工作的答案。

这是我的输入:

input = structure(list(X = 1:6, Report = c("Sales.csv", "Sales.csv", 
"Sales.csv", "Sales.csv", "Sales.csv", "Sales.csv"), Shock = c("Currencies.USD_Up",
"Currencies.USD_Down", "Currencies.AUD_Up", "Currencies.AUD_Down",
"Currencies.EUR_Down", "Currencies.EUR_Up"), Result = c(-519375.9816,
-7388851.423, -42950.77683, -667.367063, -12819532.15, -138054.0061
), FX = c("USD", "USD", "AUD", "AUD", "EUR", "EUR")), class = "data.frame", row.names = c(NA,
-6L))

这是我的首选输出:

output = structure(list(X = 1:3, Report = c("Sales.csv", "Sales.csv", 
"Sales.csv"), Shock = c("Currencies.USD", "Currencies.AUD", "Currencies.EUR"
), Currency = c("USD", "AUD", "EUR"), Up = c(-519375.9816, -42950.77683,
-138054.0061), Down = c(-7388851.423, -667.367063, -12819532.15
)), class = "data.frame", row.names = c(NA, -3L))

因为输入中的 EUR 数据顺序不同,我似乎无法正确调整数据形状。我试过使用 grep 函数来订购它,但我做不到。谁能提出更好的方法?

最佳答案

这是一种 tidyverse 方法:

library(dplyr)
library(tidyr)
library(tibble)
input %>%
as_tibble() %>%
separate(Shock, c("Shock", "tmp"), sep = "_") %>%
rename(Currency = FX) %>%
select(-X) %>%
spread(tmp, Result) %>%
mutate(X = row_number()) %>%
select(X, Report, Shock, Currency, Up, Down)

关于r - 使用 grep 函数在 R 中正确转换数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56894766/

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