聚合(函数 = 均值)重复样本 ID,但保留字符串列
Aggregate (function = mean) for duplicate sample ID, but keep string columns
我想对具有重复样本 ID 的样本的数字列进行平均,而不丢失字符串列。
我已经设法使用聚合函数对重复样本 ID 取平均值,但首先我必须从数据集中删除非数字列才能使其正常工作。我想保留这些描述性列。
正在创建一个假数据集:
ID<-c("QYZ","MMM","QYZ","bb2","gm6","gm6","YOU","LLL","LLL","LLL")
values<-c(1,2,4,5,5,6,8,9,6,4)
Levels<-c("A","B","A","C",'D','D',"C","y","y","y")
Exampledata<-data.frame(ID,values,Levels)
这是我试过的代码:
Exampledata2<- aggregate(Exampledata[,-3], by = list(Exampledata$ID), mean, na.rm=TRUE)
Exampledata2 在代码之后看起来像这样:
Group.1 ID values
bb2 NA 5.000000
gm6 NA 5.500000
LLL NA 6.333333
MMM NA 2.000000
QYZ NA 2.500000
YOU NA 8.000000
但我希望它看起来像这样:
ID values Levels
MMM 2 B
QYZ 2.5 A
bb2 5 C
gm6 5.5 D
YOU 8 C
LLL 6.33 y
请注意,重复样本 ID 之间的级别相同。
这是您要找的吗?如果你想让它继续下去,我看起来你需要通过声明在你的组中包含级别。
aggregate(Exampledata["values"], by = list(ID = ID, Levels = Levels), mean, na.rm=TRUE)
data.table
也一样
as.data.table(Exampledata)[, .(values = mean(values)), .(ID, Levels)]
我想对具有重复样本 ID 的样本的数字列进行平均,而不丢失字符串列。
我已经设法使用聚合函数对重复样本 ID 取平均值,但首先我必须从数据集中删除非数字列才能使其正常工作。我想保留这些描述性列。
正在创建一个假数据集:
ID<-c("QYZ","MMM","QYZ","bb2","gm6","gm6","YOU","LLL","LLL","LLL")
values<-c(1,2,4,5,5,6,8,9,6,4)
Levels<-c("A","B","A","C",'D','D',"C","y","y","y")
Exampledata<-data.frame(ID,values,Levels)
这是我试过的代码:
Exampledata2<- aggregate(Exampledata[,-3], by = list(Exampledata$ID), mean, na.rm=TRUE)
Exampledata2 在代码之后看起来像这样:
Group.1 ID values
bb2 NA 5.000000
gm6 NA 5.500000
LLL NA 6.333333
MMM NA 2.000000
QYZ NA 2.500000
YOU NA 8.000000
但我希望它看起来像这样:
ID values Levels
MMM 2 B
QYZ 2.5 A
bb2 5 C
gm6 5.5 D
YOU 8 C
LLL 6.33 y
请注意,重复样本 ID 之间的级别相同。
这是您要找的吗?如果你想让它继续下去,我看起来你需要通过声明在你的组中包含级别。
aggregate(Exampledata["values"], by = list(ID = ID, Levels = Levels), mean, na.rm=TRUE)
data.table
也一样as.data.table(Exampledata)[, .(values = mean(values)), .(ID, Levels)]