通过剪贴板在R和Excel之间移动数据

相信大家都用Excel处理过数据,对于使用R的人来说,更是经常需要从Excel中把数据读入到R中做进一步处理。虽然Excel统计和绘图也很强大,但是还是是有一些局限性的。

R是不能直接读取Excel文件的,csv文件除外,因为csv文件本质上是文本文件,是以逗号为分隔符的文本文件,只是恰好能用Excel打开而已。其实以制表符隔开的文本文件也是可以直接用Excel打开的。如果要使用R直接读取.xlsx文件,是需要额外安装一些R包的

小编的做法一般是将Excel文件另存为csv文件或者是制表符分隔的文件再用R的read.table来做处理。其实有时候只是想对Excel中一列或者几列做一个简单的查看或统计,并不需要小题大做。那么今天小编就给大家介绍两个简单R读取Excel中数据的偷懒方法。

1.scan

举个例子,我从TCGA下载了一套临床数据,想看看不同病理分期的病人分别有多少个,当然Excel也可以通过筛选来得到每个分期的病例数,但是当病理分期很多的时候,操作起来也需要一些时间(如果你是Excel高手,熟悉数据透视表,另当别论),而如果读到R中,直接一个简单的table命令就可以得到结果。数据如下:

这个时候scan就可以大显身手了

#读入的是字符串,所以需要设置what为character,
#如果读入的是数字可以直接scan()
#分隔符默认是空,这里设置成制表符
stage=scan(what="c",sep="\t")  #回车
#将stage这列的信息从Excel中拷贝粘贴到R中就可以了
table(stage)

2.读取clipboard中的内容

第二种方法是直接读取剪切板(clipboard)中内容,这个方法也利用read.table,只是不从外部文件中读取数据,而是直接读取剪切板中的内容。这样就可以省去另存为这个动作。

还是这套数据,我们来看看男性和女性病人的年龄有没有显著差异

#先选中Excel中三列数据,ctrl+c拷贝到剪切板中
#通过read.table读入到data中
data=read.table("clipboard",header=T,sep="\t")、
#计算年龄
data$age=2020-data$year_of_birth
#T检验
t.test(age~gender,data)  #p值0.1867,不显著
#boxplot
boxplot(age~gender,data,col=c("red","blue"))

具体操作方法和结果如下

希望今天的偷懒方法对大家有用。

通过剪贴板在R和Excel之间移动数据​

你可能感兴趣的:(通过剪贴板在R和Excel之间移动数据)