R语言长款数据转换(自备)

本文介绍了如何使用R语言中的tidyverse包进行宽数据(如DataFrame)转为长数据(melt操作)以及长数据转回宽数据(pivot_wider和unnest)的过程,同时展示了dcast和acast函数在数据重塑中的应用。

目录

宽数据转长数据

长数据转宽数据

长数据转宽数据2

R语言进行长宽数据的相互转换

宽数据转长数据

模拟数据

rm(list = ls())
options(stringsAsFactors = F)
library(tidyverse)
library(reshape)
set.seed(123)
group1 <- runif(20, 2, 5)
group2 <- runif(20, 4, 7)
group3 <- runif(20, 6, 9)
group4 <- runif(20, 8, 11)

dfwide <- data.frame(cluster = rep(c("cluster1","cluster2"), 10),group1,group2,group3,group4)

#转换为长数据
dflong <- melt(dfwide, id.vars = c("cluster"))##根据分组变为长数据

结果

长数据转宽数据
#先进行转换为宽数据
df_wide1 <- dflong%>%pivot_wider(names_from = variable,
                            values_from =value )
##然后对数据进行拆分
#?unnest 函数
df_wide2 <- df_wide1 %>% unnest(group1, group2, group3, group4) 


dfwide1a <- dfwide[order(dfwide$cluster),]
rownames(dfwide1a) <- c(1:nrow(dfwide1a))
df_wide2 <- as.data.frame(df_wide2)
identical(dfwide1a,df_wide2)
[1] TRUE

先转宽:

在拆分:

然后dfwide1a <- dfwide[order(dfwide$cluster),] 调整原数据的顺序进行比较

长数据转宽数据2

#需要进行数据转换
library(reshape2)
cellper <- dcast(Cellratio,Var2~Var1, value.var = "Freq")

Use acast or dcast depending on whether you want vector/matrix/array output or data frame output. Data frames can have at most two dimensions.

dcast(chick_m, time ~ variable, mean) # average effect of time
dcast(chick_m, diet ~ variable, mean) # average effect of diet
acast(chick_m, diet ~ time, mean) # average effect of diet & time

 R语言数据变形melt和dcast用法_d.cast r语言-优快云博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值