我有一个宽格式的大型数据集(一百万行和约300列)。 数据集包含多个产品的不同指标,例如收入,成本等。不幸的是,数据集采用了宽格式。因此,诸如收入或成本之类的变量并非一栏。而是每个产品的收入/成本等都有一个列。
例如,这些列称为“ product1_revenue”,“ product2_revenue”,“ product1_costs”,“ product2_costs”等。
我想将数据集转换为长格式,以便可以正常使用。
我可以实现一个变量“ total_revenue”的转换。这行得通(除了我无法保留id的事实),但我也希望将其用于所有其他指标。
select(ends_with("_total_revenue")) %>%
gather(key=product,value="total_revenue") %>%
mutate(product=str_replace(product,"_total_revenue",""))
### Trying to keep the IDs does not work:
dataset %>%
select(ends_with("_total_revenue"),id) %>%
gather(key=product,value="total_revenue") %>%
mutate(product=str_replace(product,"_total_revenue",""))
### I want something like this (if it would work of course)
i<-c("_total_revenue","_total_cost")
for(ends_with(colnames(dataset),i) in i)
{
dataset %>%
select(ends_with(!!i),id) %>%
gather(key=product,value=!!i) %>%
mutate(product=str_replace(product,!!i,""))
print(i)
}
答案 0 :(得分:0)
假设您拥有类似这样的数据:
let animationId;
function screenstart(){
randcal();
ifstatements();
animationId = requestAnimationFrame(screenstart);
}
function screenstop(){
cancelAnimationFrame( animationId );
}
我们可以使用df <- data.frame(id = 1:5, product1_cost = 11:15, product2_cost = 16:20,
product1_revenue = 21:25, product2_revenue = 26:30)
df
# id product1_cost product2_cost product1_revenue product2_revenue
#1 1 11 16 21 26
#2 2 12 17 22 27
#3 3 13 18 23 28
#4 4 14 19 24 29
#5 5 15 20 25 30
库中的函数来转换宽格式的数据。
tidyr