【问题标题】:R - create row duplicates for every value of a class variableR - 为类变量的每个值创建行重复
【发布时间】:2017-05-24 01:34:00
【问题描述】:

我正在尝试在 R 中重新创建我在 SAS 中的流程,在该流程中,我创建了一个具有某个变量的不同值的数据集,以对该变量进行评分。在这种情况下,我希望重复数据集中的每个观察,治疗序号从 0 变为 4,因此每个观察将变成 5 个观察。

SAS 代码:

data want;
  set have;
  do treatmentordinal=0 to 4;
  output;
  end;
run;

这基本上将为数据集中的每个观察创建 5 个观察,其中处理序号将从 0 变为 4 。我一直在寻找如何做到这一点,但找不到任何东西。

需要明确的是,我已经有一个包含 10k 左右行的数据集。只想让每一行都有每一种治疗价值。

示例 有:

treatment=c(2)
ID=c(1)
df_have=data.frame(treatment,ID)

想要:

treatment2=c(0,1,2,3,4)
ID=c(1)
df_want=data.frame(treatment2,ID)

【问题讨论】:

  • data.frame(treatment = 0:4, ID=1) ?或使用transform(df_have[rep(1, 5),], treatment = seq(5)-1)
  • 我想这是我的例子的另一种方式,虽然我想将一些东西应用于已经制作的数据集。
  • 请检查我之前评论中的编辑
  • 嗯,我明白了意图,我正试图弄清楚要改变什么,但现在它只是在 df_have 数据集中进行第一次观察,所以我最终得到了一个数据集共 5 次观察
  • @AdamSanders 你的数据有唯一的id 吗?是否要为该唯一 ID 复制每一行?

标签: r


【解决方案1】:

我想你要找的是expand.grid

treatment2=c(0,1,2,3,4)
ID=c(1:2)
expand.grid(TR=treatment2,ID=ID)
      TR   ID
1     0    1
2     1    1
3     2    1
4     3    1
5     4    1
6     0    2
7     1    2
8     2    2
9     3    2
10    4    2

在您的主要数据上,您可能可以执行以下操作:

expand.grid(TR=unique(data$treatment), ID=unique(data$ID))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 2016-03-09
    • 2020-03-25
    • 2019-05-13
    • 2019-03-01
    • 1970-01-01
    • 2017-01-07
    相关资源
    最近更新 更多