我需要根据“组”,“模型”和“ qsec”列上的值重塑数据框。以mtcars数据为例,是否可以使用dplyr或tidyr来实现这一目标?
我需要重塑非常大的数据框,但不幸的是,我不知道如何使用dplyr解决此问题。
http://localhost:8080/employees?pageNumber=0&pageSize=4
我需要重塑每个列将是一个组(A,B或C),并作为row.names,每个汽车模型都属于每个组。这些值将是“ qsec”列上的值,对于组没有任何“ qsec”值的情况则为零。
df<-mtcars[1:3,]
df$model <- rownames(df)
row.names(df)<-NULL
df<-df[rep(seq_len(nrow(df)), each=2),]
df$group <- c("A","B","A","C","A","B")
####
> df
mpg cyl disp hp drat wt qsec vs am gear carb model group
1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 A
1.1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 B
2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Mazda RX4 Wag A
2.1 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Mazda RX4 Wag C
3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Datsun 710 A
3.1 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Datsun 710 B
答案 0 :(得分:1)
我想这就是你想要的:
library(tidyverse)
df2 <- df%>%
select(group, model, qsec)%>%
spread(key = group, value = qsec)
row.names(df2) <- df2$model
df_final <- df2[-1]
答案 1 :(得分:1)
使用dcast
中的reshape2
和replace_na
中的tidyr
:
df <- df %>%
select(model, qsec, group) %>%
dcast(model ~ group, value.var = "qsec") %>%
replace_na(list(A = 0, B = 0, C = 0))