长宽数据转换

长宽数据转换
数据集可从www.childmortality.org下载,名为“五岁以下儿童、婴儿和新生儿死亡率估计”。
#查看数据集的维度
dim(Exercise.1.Dataset)

结果:585行399列

#返回数据集缺失值的个数和百分比
sum(is.na(Exercise.1.Dataset))
mean(is.na(Exercise.1.Dataset))
结果:共57980个缺失值

#对缺失值进行可视化探索
library(‘VIM’)aggr(Exercise.1.Dataset, prop = FALSE, number = TRUE)

#将数据集子集化为每个国家的中值估计(删除表示上下不确定边界的行),并同时将数据集中无效变量ISO.Code和Uncertainty.bounds剔除,以达到化简数据集的目的
da <- aggregate(Exercise.1.Dataset[,4:399],list(Exercise.1.Dataset[,2]),median)
sum(is.na(da))
mean(is.na(da))
结果:19359个缺失值,占比25.01%

#宽数据转换为长数据#使用melt 函数将宽数据da转换为长数据da1
install.packages(‘reshape2’)
library(‘reshape2’)
da1 <- melt(da ,id.vars=‘Group.1’,variable.name=‘U5MR.1950:Neonatal.Deaths.2015’)

#使用substr函数将变量“U5MR.1950:Neonatal.Deaths.2015”分解为“type”和“year”两个变量,最终得到数据集da3即所需长数据集
aa <- da1 ‘ U 5 M R . 1950 : N e o n a t a l . D e a t h s . 2015 ‘ a a 1 &lt; − a s . v e c t o r ( a a , m o d e = &quot; c h a r a c t e r &quot; ) l e n g t h = a s . i n t e g e r ( n c h a r ( a a 1 ) ) d a 1 `U5MR.1950:Neonatal.Deaths.2015` aa1 &lt;- as.vector(aa,mode = &quot;character&quot;) length=as.integer(nchar(aa1)) da1 U5MR.1950:Neonatal.Deaths.2015aa1<as.vector(aa,mode="character")length=as.integer(nchar(aa1))da1type <- substr(da1 ‘ U 5 M R . 1950 : N e o n a t a l . D e a t h s . 2015 ‘ , 1 , l e n g t h − 5 ) d a 1 `U5MR.1950:Neonatal.Deaths.2015`,1,length-5) da1 U5MR.1950:Neonatal.Deaths.2015,1,length5)da1year <- substr(da1$U5MR.1950:Neonatal.Deaths.2015,length-3,length)
da2 <- na.omit(da1)
da3 <- da2[,-2]
效果似乎不怎么OK。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值