如何解决将所有数据框行与新变量合并为一行
我在细胞培养的不同时间点有一个大的分段细胞数据集。 我的最终目标是使用分类器能够通过使用它们的形状将早期时间点的细胞与后期细胞分开。但是,为此我需要使用的是细胞形状的整体组成(即,稍后的时间点将包含更多不那么圆的较大细胞)。
我的数据看起来像这样,段落是“类”变量(1:8)。
Area Circ. X Y Major Minor Angle AR Round Solidity Passage
1 270.606 0.476 369.677 11.832 21.497 16.028 177.550 1.341 0.746 0.902 1
2 260.733 0.652 219.469 14.233 18.847 17.614 51.695 1.070 0.935 0.948 1
3 444.248 0.682 70.619 24.071 27.845 20.313 54.227 1.371 0.730 0.953 1
4 236.565 0.607 409.612 21.472 18.800 16.022 110.348 1.173 0.852 0.939 1
5 291.237 0.376 547.529 19.330 30.212 12.274 178.844 2.462 0.406 0.915 1
6 201.690 0.662 202.990 20.799 16.457 15.604 54.949 1.055 0.948 0.949 1
我现在的方法是从一个传代中采样 n 个细胞,然后用这个来训练分类器。
#number of cells in image
num_draw = 15
all_samples <- list()
for (i in 1:8){
sample_list <- list()
for (j in 1:1000){
samples = filter(df,df$Passage == i)
sample_list[[j]] = samples[sample(nrow(samples),20),]
}
all_samples[[i]] <- sample_list
}
然而,大多数分类器似乎只获取每行有一个观察值的数据,所以我认为我最好的办法是将样本中的所有单元格合并为一行,同时保留所有变量/列(可能为 Area1、Area2,Area3,...) 除了段落,它被合并为一列,然后将所有观察结果合并到一个数据帧中。
有没有一种快速的方法来做到这一点?或者你能给我推荐一个可以将一个类的 n 个实例作为一个观察的分类器吗?
解决方法
我不确定您为什么要这样做,因为我认为这会使处理您的数据变得更加困难。也许考虑pivot_longer,并使用group_by 和summary。无论如何,这是我的解决方案。祝你好运!
library(tidyr)
library(dplyr)
#create data
df <- data.frame(Area = rnorm(4),circ = rnorm(4),x = rnorm(4),passage = c("1","1","2","2"))
#spread data wide based off number of observations of passage
df <- group_by(df,passage) %>%
mutate(reference = row_number()) %>% #creates reference for each obs of passage
pivot_wider(id_cols = passage,names_from = reference,values_from = Area:x)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。