gpt4 book ai didi

r - 创建列联表

转载 作者:行者123 更新时间:2023-12-01 23:03:31 24 4
gpt4 key购买 nike

我有数百个包含各种列表元素的文本文件(以千计)。下面给出了三个简化的代表性文件(这里的行元素为颜色)。

group1.txt

red
blue
red
green
pink
red

group2.txt

yellow
brown
cyan
yellow
brown
red
violet
orange

group3.txt

orange
violet
pink
cyan
grey

我可以使用以下脚本创建一个排序计数表 -

awk -F '\t' '{print $1}' * | sort | uniq -c | sort -nr

>

  4 red
2 yellow
2 violet
2 pink
2 orange
2 cyan
2 brown
1 grey
1 green
1 blue

我想创建一个列联表如下 -

Colour  group1  group2  group3
red 3 1 0
green 1 0 0
blue 0 0 0
yellow 0 2 0
orange 0 1 1
grey 0 0 1
violet 0 1 1
pink 1 0 1
brown 0 2
cyan 0 1 1

如何使用 awk、python、perl 或 R 创建此列联表?

最佳答案

这是 R 中的一个解决方案。

设置文件(这只是为了让我们有一个可以使用的示例 - 不是构建列联表的实际机制的一部分):

writeLines(c("red","blue","red","green","pink","red"),
con="group1.txt")
writeLines(c("yellow","brown","cyan","yellow","brown","red",
"violet","orange"),
con="group2.txt")
writeLines(c("orange","violet","pink","cyan","grey"),
con="group3.txt")

大部分工作是读入和排列数据:假设我们知道文件名为 groupNN.txt 其中 NN 是一个数字...

flist <- list.files(pattern="group[0-9]+.txt")
grpnames <- gsub("\\.txt$","",flist)

读取颜色文件:

col_list <- lapply(flist,scan,what="character")

组 ID 的匹配向量:

grpvec <- rep(grpnames,sapply(col_list,length))

现在只需使用 table:

table(unlist(col_list),grpvec)
## grp
## col group1 group2 group3
## blue 1 0 0
## brown 0 2 0
## cyan 0 1 1
## green 1 0 0
## grey 0 0 1
## orange 0 1 1
## pink 1 0 1
## red 3 1 0
## violet 0 1 1
## yellow 0 2 0

(这是按字母顺序排列的;我不确定这对你有多重要......)

关于r - 创建列联表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38873228/

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