196705怎么改成1967年5月?
今天是生信星球陪你的第374天
大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~
就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~
这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!
花花写于2019.5.22,忙里偷闲解决下问题。
问题


有会excel的大佬可以告诉我吗,这是为啥子?
R语言的解决思路
只需要paste0函数粘起来。
知道有处理时间序列的R包,我没有学,就用土办法咯
代码实现
原始数据保密,因此我提取了一列并将它存为Rdata,需要使用可直接加载。示例数据请在“生信星球”公众号后台回复“2348”获取将该文件存放于你的工作目录下。
1.查看数据
load("x2.Rdata")
head(x2)
#[1] "出生年月" "196705"
#[3] "196306" "196611"
#[5] "196207" NA
length(x2)
#[1] 97
可以看到,第一个元素是“出生年月”,也就是表头没有读取成功,这个是因为她的表格第一行使用了合并单元格,我也懒得打开源文件去改啦,用向量取子集的方法删掉吧。
x3=x2[-1]
head(x3)
2. 分割年份和月份
可以看到表格种有NA,本来想去掉,但我想了一下不去掉也可以,因为还需要把这一列粘贴到表格中,其他列有信息,是不可以直接删掉的。如果去掉,还需要经过几次复制粘贴,可以试一下再R种生成直接空着的,也就是用“”代替。
year=str_sub(x3,1,4)
month=as.numeric(str_sub(x3,5,6))
x4=paste0(year,"年",month,"月")
head(x4)
方法一:
可以看到,带NA的都被写成了”NA年NA月”,所以可以直接匹配,换成空字符串。
x4[x4=="NA年NA月"]=""
head(x4)
方法二:ifelse大法好
x4=ifelse(is.na(x3),"",paste0(year,"年",month,"月"))
head(x4)
#head(x4)
[1] "1967年5月" "1963年6月"
[3] "1966年11月" "1962年7月"
#[5] ""
3.导出为表格文件,csv和xls都可以
write.csv(x4,file = "x.csv",row.names = F)
复制粘贴到原来的表格就可以啦!!
简书:小洁忘了怎么分身
隔壁生信技能树公益视频合辑(学习顺序是linux,r,软件安装,geo,小技巧,ngs组学!)
国内看B站,教学视频链接:https://m.bilibili.com/space/338686099
国外看YouTube,教学视频链接:https://m.youtube.com/channel/UC67sImqK7V8tSWHMG8azIVA/playlists友情链接:
点击底部的“阅读原文”,获得更好的阅读体验哦😻
初学生信,很荣幸带你迈出第一步。
我们是生信星球,一个不拽术语、通俗易懂的生信知识平台。由于是2018年新号,竟然没有留言功能。需要帮助或提出意见请后台留言、联系微信或发送邮件到jieandze1314@gmail.com,每一条都会看到的哦~
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!