gpt4 book ai didi

r - 从 R 中的现有数据框中提取数据(或 reshape )数据框

转载 作者:行者123 更新时间:2023-12-02 07:44:59 24 4
gpt4 key购买 nike

我有一个正在使用的大型数据框,前几行如下:

      Assay   Genotype   Sample    Result
1 001 G 1 0
2 001 A 2 1
3 001 G 3 0
4 001 NA 4 NA
5 002 T 1 0
6 002 G 2 1
7 002 T 3 0
8 002 T 4 0
9 003 NA 1 N
10 003 G 2 1
11 003 G 3 1
12 003 T 4 0

总共我将处理 2000 个样本,每个样本进行 168 次检测。对于每个样本,我想为每个样本提取“结果”中的数据,以创建一个列表或数据框,如下所示:

Sample  Data
1 00N
2 111
3 001
4 N00

由此产生的数据框(或类似的首选数据结构)将是 2000 行和 2 列。 “数据”行将包含 168 个字符,每个字符代表每个“分析”。

谁能帮我解决这个问题?

最佳答案

一种使用包 plyr 和基本函数 paste 的方法:

library(plyr)
ddply(dat, "Sample", summarize, Data = paste(Result, collapse = ""))

Sample Data
1 1 00N
2 2 111
3 3 001
4 4 NA00

编辑以解决问题

我能想到的将 NA 更改为 N 的最简单方法可能是对 ddply 的结果使用 gsub。请注意,我慷慨地借用了@Brian re: ordering 提供的非常好的观点。这样做,这是一个很好的提示!

out <- ddply(dat, "Sample", summarize, Data = paste(Result[order(Assay)], collapse = ""))

然后使用gsub

out$Data <- gsub("NA", "N", out$Data)

等等:

  Sample Data
1 1 00N
2 2 111
3 3 001
4 4 N00

关于r - 从 R 中的现有数据框中提取数据(或 reshape )数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7732438/

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