gpt4 book ai didi

python - 使用 R 或 Python 对数据进行子集化

转载 作者:太空宇宙 更新时间:2023-11-03 18:00:17 27 4
gpt4 key购买 nike

我想对以下数据集进行子集化。具体来说,我只想检索“csv”格式的 1)ID、2)ASIN、3)组、4)销售排名和 5)类别。我将使用 R 或 Python。(R不能经常读取这种不规则的数据格式)。

以下数据没有通常的格式,所以我不知道如何对其进行子集化。我有两年有 R 经验,但主要使用该工具进行统计目的。所以,我不习惯处理这种不寻常格式的数据操作。如果有人能给我答案(或线索),那就太好了。最下面是一组由“key:value”组成的数据。最终结果应该是这样的这个:

Id   ASIN     group salesrank categories
1 0827229534 Book 396585 2

原始数据如下:

************************************************************************************************
Id: 1

ASIN: 0827229534

title: Patterns of Preaching: A Sermon Sampler

group: Book

salesrank: 396585

similar: 5 0804215715 156101074X 0687023955 0687074231 082721619X

categories: 2

|Books[283155]|Subjects[1000]|Religion & Spirituality[22]|Christianity[12290]|Clergy[12360]|Preaching[12368]

|Books[283155]|Subjects[1000]|Religion & Spirituality[22]|Christianity[12290]|Clergy[12360]|Sermons[12370]

reviews: total: 2 downloaded: 2 avg rating: 5

2000-7-28 cutomer: A2JW67OY8U6HHK rating: 5 votes: 10 helpful: 9

2003-12-14 cutomer: A2VE83MZF98ITY rating: 5 votes: 6 helpful: 5

最佳答案

您可以尝试使用R

  1. 使用readLines读取文件
  2. 使用 paste 创建一个模式,使用 grep 对行进行子集
  3. 将“lines1”拆分到一个列表中,其中列表元素是每个前缀组。在split之前,我使用sub删除了:LHSRHS
  4. cbind 使用 do.call(cbind) 列表元素并将其转换为 data.frame
  5. 这将返回character类的列。不清楚哪一个应该是字符/数字

注意:我创建了两条记录只是为了重现该问题。

     lines <- readLines('file.txt')
pat <- paste0(c('Id', 'ASIN', 'group', 'salesrank', 'categories'),
':', collapse='|')
lines1 <- lines[grep(pat, lines)]
val <- str_trim(sub(".*:", "", lines1))
Grp <- sub(":.*", '', lines1)

library(stringr)
res <- do.call(cbind,split(val,Grp))

res1 <- as.data.frame(res,stringsAsFactors=FALSE)
res1
# ASIN categories group Id salesrank
#1 0827229534 2 Book 1 396585
#2 0827529534 3 Book2 2 396587

关于python - 使用 R 或 Python 对数据进行子集化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27791358/

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