用R替换数据

浏览: 1451

储存数据,尤其是字符型数据,有时候不会储存完整的内容,可能会用一个字符代替整个内容,这样会使存储的体积更小,那么我们在使用时候需要将数据完整的表达出来。下面是一个如何替换数据的例子。

我使用关于蘑菇种类的一个数据集。

install.packages("bitops")
install.packages("RCurl")

library("bitops")
library("RCurl")

# 输入数据
url = "https://raw.githubusercontent.com/chrisestevez/MSDA-Bridge/master/mushroom.csv"

Rdata = getURL(url)

MyData = read.csv(text = Rdata,header = FALSE,sep=",")
MyFinalData = data.frame(MyData)
samp = head(MyFinalData, n = 10)

以上我们完整的将数据导入到了内存中,为了方便展示,我截取前十个row作为例子

> samp
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14
1 p x s n t p f c n k e e s s
2 e x s y t a f c b k e c s s
3 e b s w t l f c b n e c s s
4 p x y w t p f c n n e e s s
5 e x s g f n f w b k t e s s
6 e x y y t a f c b n e c s s
7 e b s w t a f c b g e c s s
8 e b y w t l f c b n e c s s
9 p x y w t p f c n p e e s s
10 e b s y t a f c b g e c s s
V15 V16 V17 V18 V19 V20 V21 V22 V23
1 w w p w o p k s u
2 w w p w o p n n g
3 w w p w o p n n m
4 w w p w o p k s u
5 w w p w o e n a g
6 w w p w o p k n g
7 w w p w o p k n m
8 w w p w o p n s m
9 w w p w o p k v g
10 w w p w o p k s m

我们取其中的V1, V3,V5,V7 作为子集,并且替换每列的标签

samp = subset(samp, select = c(V1,V3,V5,V9))
colnames(samp) = c("MushroomType","CapSurface","Bruises","GillSize")

输出如下:

> samp
MushroomType CapSurface Bruises GillSize
1 p s t n
2 e s t b
3 e s t b
4 p y t n
5 e s f b
6 e y t b
7 e s t b
8 e y t b
9 p y t n
10 e s t b

下面我们要将其中每个cell的字母所代表的意思列出来,当然,如果用图形表示的话并不需要全部替换,但是有时候需要将表格出示。

# 替换数据
samp$MushroomType = c('p'="poisonous",'e'="edible")[ as.character(samp$MushroomType)]
samp$CapSurface = c('f'="fibrous",'g'="grooves",y='scaly','s'="smooth")[ as.character(samp$CapSurface)]
samp$Bruises = c('t'="bruises",'f'="no")[ as.character(samp$Bruises)]
samp$GillSize = c('b'="broad",'n'="narrow")[ as.character(samp$GillSize)]

最终输出结果如下:

> samp
MushroomType CapSurface Bruises GillSize
1 poisonous smooth bruises narrow
2 edible smooth bruises broad
3 edible smooth bruises broad
4 poisonous scaly bruises narrow
5 edible smooth no broad
6 edible scaly bruises broad
7 edible smooth bruises broad
8 edible scaly bruises broad
9 poisonous scaly bruises narrow
10 edible smooth bruises broad
推荐 2
本文由 dykin 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

4 个评论

收藏
简单易懂
我都不敢发布的,觉得这个没啥技术含量,只是想自己写着玩的~~~但是这里好像没有私人播客功能
dykin

dykin 回复 李蕊

多谢

要回复文章请先登录注册