在 R 中使用附加变量创建边列表

2023-12-09

我有这样的数据:

ID=c(rep("ID1",3), rep("ID2",2), "ID3", rep("ID4",2))
sex=c(rep("male",3), rep("female",2), "female", rep("male",2))
item=c("a","b","c","a","c","a","b","a")

df1 <- data.frame(ID,sex,item)
df1
  ID    sex item
1 ID1   male    a
2 ID1   male    b
3 ID1   male    c
4 ID2 female    a
5 ID2 female    c
6 ID3 female    a
7 ID4   male    b
8 ID4   male    a

我需要它作为这样的边缘:

head(nodes)

  ID    sex    V1  V2
1 ID1   male    a  b
2 ID1   male    b  c
3 ID1   male    a  c
4 ID2 female    a  c
5 ID4   male    b  a

在 @akrun 的帮助下,我可以得到 V1 和 V2 列:

lst <- lapply(split(item, DG), function(x) if(length(x) >=2) t(combn(x,2)) else NULL) 
nodes=as.data.frame(do.call(rbind,lst[!sapply(lst, is.null)]) )

但是我怎样才能从原始 df 中“获取”ID 和其他一些变量(性别、年龄等)并将它们作为“节点”中的“性别”等列?


我觉得已经解决了一次,但这里有一个可能的解决方案data.table这是新的(v >= 1.9.5) tstrsplit功能

library(data.table)
setDT(df1)[, if(.N > 1) tstrsplit(combn(as.character(item),
              2, paste, collapse = ";"), ";"),
            .(ID, sex)]

#     ID    sex V1 V2
# 1: ID1   male  a  b
# 2: ID1   male  a  c
# 3: ID1   male  b  c
# 4: ID2 female  a  c
# 5: ID4   male  b  a
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中使用附加变量创建边列表 的相关文章

  • R:几个单独图的重新排序因子水平

    我正在尝试从同一个 data frame 创建多个单独的图 每个图的 y 轴上的因子水平顺序不同 每个图都应该对 y 上的因子水平进行递减排序 我知道这可以为每个图手动完成 但我正在寻找一种更有效和更优雅的方法 因为我需要创建相当多的图 这
  • 在函数中调用其他列的控制流程

    我正在尝试在给定条件的情况下连接到函数中的其他列 本质上 我想让数据框在给定条件的情况下从长到宽 其中一列中的这些值是NA相对于同一行中具有值的另一列 转动NAs转化为特定的数字 尽管分配的值必须是特定于列的 因此 如果2010 has N
  • 将整数“20160119”转换为“日”“年”“月”的不同列

    如何将一列整数转换为日期 DATE PRCP 1 19490101 25 2 19490102 5 3 19490118 18 4 19490119 386 5 19490202 38 到这样的表 days month years PRCP
  • R - 对矩阵的每行/列应用具有不同参数值的函数

    我试图将函数应用于矩阵的每一行或每一列 但我需要为每一行传递不同的参数值 我以为我熟悉 lapply mapply 等 但可能还不够 举个简单的例子 gt a lt matrix 1 100 ncol 10 gt a 1 2 3 4 5 6
  • 使用 R 中“rpart”包中的生存树来预测新的观察结果

    我正在尝试使用 R 中的 rpart 包来构建生存树 并且我希望使用这棵树来对其他观察结果进行预测 我知道有很多涉及 rpart 和预测的问题 但是 我还没有找到任何解决 我认为 特定于将 rpart 与 Surv 对象一起使用的问题的方法
  • 无法将 bigrquery 与标准 sql 一起使用

    我正在 R ipython 笔记本 相对 R 新手 中工作 并尝试使用 bigrquery 从 Google Big Query 中提取数据 我被告知这应该很简单 但使用标准 sql 提取不起作用 这是我的代码 require bigrqu
  • 按元素名称组合/合并列表

    我有两个列表 其元素的名称部分重叠 我需要将其逐个元素合并 组合成一个列表 gt lst1 lt list integers c 1 7 letters letters 1 5 words c two strings gt lst2 lt
  • 使用 geom_abline() 和 ggplot

    我是初学者ggplot2 距离我开始试验才过去 4 天 所以 如果这个问题听起来太基本了 我深表歉意 我很感激任何指导 我已经在这个问题上苦苦挣扎了大约一个小时 我正在尝试使用geom abline 如下 p lt ggplot mpg a
  • R data.table 中的复杂求和涉及查看其他列

    我有一个数据表 其中变量的每个值v1 and v2有一个关联的 类型 在单独的列中编码 这是一个 MWE X lt data table id 1 5 group c 1 1 2 2 2 v1 c 10 12 14 16 18 type v
  • 如何创建具有特定于每个方面的标题和副标题的分面图?

    生成一个图 该图与每列的单独图相结合 带有标题和副标题 以及每个图的垂直线 我使用直方图创建了带有垂直线的列 library ggplot2 library gridExtra library tidyr actualIris lt dat
  • R dbGetQuery 与动态字符串

    From 这个帖子 https stackoverflow com questions 3416973 dynamic string in r and 这个帖子 https stackoverflow com questions 34496
  • R 中 bquote 中的拼接

    假设我正在使用 R 的反引号运算符构建一个表达式bquote 并且我想在列表中的特定位置 拼接 即丢失列表的外括号 例如 我有表达式 5 4 我想在其开头添加 6 而不使用字符串操作 即完全对符号结构进行操作 So gt b quote 5
  • 使用 dplyr 通过管道删除空列

    我有一个宽格式的参与者问卷答复数据框 每列代表一个特定的问题 项目 数据框看起来像这样 id lt c 1 2 3 4 Q1 lt c NA NA NA NA Q2 lt c 1 4 5 Q3 lt c NA 2 3 4 Q4 lt c 2
  • 如何使用 roxygen 记录数据集?

    是否可以在 roxygen 进程中将 R 文件包含在我的包的数据目录中 我已将几个 R 文件放入数据目录中 当它们使用 data 获取数据时 它们会读取原始数据文件并执行一些转换 Roxygen 可以在 R 文件中的任何位置使用 换句话说
  • 在 R 中,如何估算右删失缺失数据以遵循假设的分布?

    早些时候 已经解释了左删失数据遵循假设分布的随机插补here https stackoverflow com questions 76346589 in r how to impute left censored missing data
  • 如何通过 R 的 cor() 的相关分析计算 P 值和标准误差

    I have data http dpaste com 1064360 plain 其中包含每个条件 x 和 y 的 54 个样本 我通过以下方式计算了相关性 gt dat lt read table http dpaste com 106
  • Rmpi:mclapply:在 selectChildren(ac, 1) 中:选择中出现“系统调用中断”错误

    以下最小示例 require Rmpi set seed 1 foo lt parallel mclapply seq len 10 function l lapply 1 10 function x mean rnorm 10000 me
  • 如何为ggplot中的每个方面行添加y轴标题?

    我正在做一个散点图facet grid 像那样 library ggplot2 ggplot df aes x y geom point facet grid group1 group2 我想要 y 轴标题y像这样位于每一行的中间 绘制解决
  • 将代表扩展到矩阵?

    如果你打电话rep在矩阵上 它重复其元素而不是整个矩阵 传统的修复方法是调用rep list theMatrix 我想延长rep以便它自动执行此操作 我尝试使用 rep matrix lt function x rep list x 这确实
  • 如何在R中生成多个矩阵

    我在 R 中得到了两个值列表 daily max car List 1 21 21 22 22 22 22 21 daily 0 8 List 2 16 17 17 17 18 17 17 尝试在 R Studio 中编写一个 For 循环

随机推荐