gpt4 book ai didi

r - 导入由新行分隔的文本文件

转载 作者:行者123 更新时间:2023-12-04 10:58:39 27 4
gpt4 key购买 nike

最终,我需要创建下表:

ID Age Gender
1 25 F
2 14 M

等等。 . .

我在很多txt文件中获取了我的数据,其中ID是文件名。年龄和性别用换行分隔,例如:

Age: 25
Gender: F

现在,我将所有文件合并到一个数据表中,文件路径作为 ID 列(稍后我将使用 stringr 去掉整个路径)

all_test <- list.files(path = "my/file/path", full.names=T)
dtt <- rbindlist( sapply(all_test, fread, simplify = FALSE, sep=":", sep2=" "),use.names = TRUE, idcol = "ID" )

这是我的问题 - 我得到下表:

ID V1     V2
1 Age 25
2 Gender F

我尝试使用 sep = "\n" 但它什么也没做。我如何告诉 R 每个变量在不同的行中? (最好有data.table)

最佳答案

一种可能的方法是使用 dcast reshape 为宽格式,并使用 type.convert 将列放入正确的类中:

DTnew <- dcast(DT, ID ~ V1, value.var = 'V2')[, (2:3) := lapply(.SD, type.convert), .SDcols = 2:3][]

给出:

> DTnew
ID Age Gender
1: 1 25 F
2: 2 14 M

> str(DTnew)
Classes ‘data.table’ and 'data.frame': 2 obs. of 3 variables:
$ ID : int 1 2
$ Age : int 25 14
$ Gender: Factor w/ 2 levels "F","M": 1 2
- attr(*, ".internal.selfref")=<externalptr>
- attr(*, "sorted")= chr "ID"

示例数据:

DT1 <- fread('Age: 25
Gender: F', sep = ':')
DT2 <- fread('Age: 14
Gender: M', sep = ':')
DT <- rbindlist(list(DT1, DT2), idcol = 'ID')

关于r - 导入由新行分隔的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49596277/

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