r - 您对如何在 R 中管理数据的建议
问题描述
我有一个 58207 x 6 的数据框。它是由不同的值组合产生的。使用 tidyverse 我按第一列分组并使用 do() 将每个唯一的第一列值分配给从第 3 列到第 6 列的特定数据框。但是,我无法弄清楚如何对第 2 列执行相同操作,不同之处在于我只需要存储在列表中的唯一值而不是重复值。
这是数据框的头部。
# A tibble: 58,207 x 6
id pfam go_id name nmspace linkage_type
<chr> <fct> <fct> <fct> <fct> <fct>
1 O00273_~ PF020~ GO:000~ cytoplasm cellular_compo~ IEA
2 O00273_~ PF020~ GO:000~ cytosol cellular_compo~ IDA
3 O00273_~ PF020~ GO:000~ plasma membrane cellular_compo~ IDA
4 O00273_~ PF020~ GO:000~ nuclear chromatin cellular_compo~ IDA
5 O00273_~ PF020~ GO:000~ apoptotic process biological_pro~ IEA
6 O00273_~ PF020~ GO:000~ protein binding molecular_func~ IPI
任何有关如何获取第二列上每个 group_by(id) 的 levels() 值并将其存储到与 id 对应的列表的建议将不胜感激。
我是新来的。如果您对如何处理此类数据有任何建议,请告诉我。基本上我希望在之后对不同的 ID 进行比较。
解决方案
这对你有用吗?
# dummy data, using data.table package, converting from tibble
library(data.table)
library(tibble)
library(gtools)
df <- tibble(id = rep(c("id1", "id2", "id3"), each=3),
X1 = c("a", "f", "b",
"b", "a", "e",
"a", "f", "f"))
dt <- as.data.table(df)
dt[]
# retaining data structure
out1 <- dt[, .(unique.X1 = unique(X1)), by = id]
out1[]
# as a list
out2 <- dt[, .(unique.X1 = list(unique(X1))), by = id]
out2[]
# back to original format
out2.df <- as.tibble(out2)
out2.df
# EDIT: getting unique combinations
ids <- unique(df$id)
lookup <- as.data.table(gtools::combinations(length(ids), 2))
lookup[, V1 := ids[lookup$V1]][, V2 := ids[lookup$V2]]
setnames(lookup, c("V1", "V2"), c("ID1", "ID2"))
lookup[, index := .I]
setkey(dt, id)
joined <- lookup[, .(intersect = list(intersect(dt[J(ID1), X1], dt[J(ID2), X1]))), by=index]
out <- merge(joined, lookup, by="index")
out[, index := NULL]
out[]
推荐阅读
- java - 执行更新/删除查询;嵌套异常是 javax.persistence.TransactionRequiredException: Executing an update/delete query
- sql-server - 未压缩的事务日志文件还原过程是否比在 SQL SERVER 中压缩更快
- android - React native TypeError:导航未定义
- python - 如何定义私有依赖项以允许带有 https 后备的 ssh(pip、setuptools)
- apache - Apache:.htaccess 没有密码
- android - 离子 V5 电容器 - cordova-plugin-media 错误代码 1
- amazon-sagemaker - 将单个模型端点转换为多模型端点
- html - 为什么 Markdown 页面无法在我的 Github Pages 网站上正确呈现?
- unity3d - C# Unity Prefabs 不会出现在 Canvas 上
- javascript - Am4Charts 轴渲染器绘制额外的网格线