gpt4 book ai didi

regex - R 正则表达式和聚合/子集

转载 作者:行者123 更新时间:2023-12-02 07:01:09 25 4
gpt4 key购买 nike

是否可以在 R 中同时使用正则表达式来聚合或使用子集?

我要解决的问题是:我有一个名为“wpbCellFeatures”的数据框,其中包含多个列,包括唯一标识符“rowColFoVCell”:

   rowColFoVCell wpbCount meanFeret meanPerim  meanCirc   meanAR meanRound meanSolidity
1 001001001001 38 1.182632 3.047368 0.7560526 1.948947 0.6036842 0.8289474
2 001001001002 8 1.886250 4.493750 0.7537500 2.365000 0.5350000 0.8325000

该列包含数字'001001001001', '001001001002', '001001001003', ... ... , '001003004002', ...等构成该ID的数字分别对应行号、列号、字段 View 和单元格编号,例如“001003004002”是第一行、第三列、第四个视野和第二个单元格。

例如,我想选择行在 1 到 3 之间的所有标识符,然后聚合到一个新的数据框中。我如何在 R 中执行此操作,我认为这将涉及使用聚合和正则表达式,但我对此不太熟悉?

谢谢

最佳答案

我不会使用正则表达式,而是使用 read.fwf(或 substr 或相关函数)将第一列拆分为相应的列。然后,将其绑定(bind)回您的原始数据集,并像往常一样使用 aggregate 等。

toBind <- read.fwf(file = textConnection(as.character(mydf$rowColFoVCell)), 
widths = c(3, 3, 3, 3), colClasses = "character",
col.names = c("Row", "Col", "FoV", "Cell"))
cbind(toBind, mydf)
# Row Col FoV Cell rowColFoVCell wpbCount meanFeret meanPerim meanCirc meanAR meanRound
# 1 001 001 001 001 001001001001 38 1.182632 3.047368 0.7560526 1.948947 0.6036842
# 2 001 001 001 002 001001001002 8 1.886250 4.493750 0.7537500 2.365000 0.5350000
# meanSolidity
# 1 0.8289474
# 2 0.8325000

在这里,我从“mydf”开始:

mydf <- structure(list(rowColFoVCell = c("001001001001", "001001001002"), 
wpbCount = c(38L, 8L), meanFeret = c(1.182632, 1.88625),
meanPerim = c(3.047368, 4.49375),
meanCirc = c(0.7560526, 0.75375),
meanAR = c(1.948947, 2.365),
meanRound = c(0.6036842, 0.535),
meanSolidity = c(0.8289474, 0.8325)),
.Names = c("rowColFoVCell", "wpbCount", "meanFeret",
"meanPerim", "meanCirc", "meanAR", "meanRound",
"meanSolidity"),
class = "data.frame", row.names = c(NA, -2L))

关于regex - R 正则表达式和聚合/子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20625929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com