怎么用R语言去重

Python030

怎么用R语言去重,第1张

你的意思是不是按照剩余n-1列进行去重啊?

如果是这种,直接用duplicated函数,例如

set.seed(1234)

df <- data.frame(x1 = sample(c("Normal","Unnormal"), 10, replace = TRUE),

x2 = sample(c("a","b"), 10,replace = TRUE),

x3 = sample(c("c","d"), 10,replace = TRUE))

df

df[!duplicated(df[,-1]),] # 按第2,3列去重后的结果

如果是要去重且必须指定第一列值是“正常”,可以用dplyr包

library(dplyr)

df %>% group_by(x2,x3) %>% filter(x1 == "Normal" &row_number() == 1) %>% ungroup() #

那你就先把所有的字符串都变成小写,再用duplicated比较就好了

x<-c("Anne","anne","bkk")

y<-tolower(x)

duplicated(y)

读入数据的时候遇到行名有重复而报错的情况,如下图

mydata<-read.table("data_RNA_Seq_v2_mRNA_median_ Zscores.txt", header = T, row.names=1, check.names = F)

报错:Error in read.table("data_RNA_Seq_v2_mRNA_median _Zscores.txt", header = T,  :   'row.names'里不能有重复的名字

此时可以使用base包中的make.names()函数

使用方法:

1.先不设置行名将数据读进去

mydata<-read.table("data_RNA_Seq_v2_mRNA_median_ Zscores.txt", header = T, check.names = F)

2.使用make.names函数将第一列作为行名

row.names(mydata<-make.names(mydata[,1],TRUE)

关于make.names函数的使用方法可以通过?make.names获得

3. 删除第一列

mydata<-mydata[,-1]

4.查看数据前五行前五列看是否行名修改完成

mydata[1:5,1:5]