敏感性分析

时间:2017-09-25 14:51:07

标签: r

我有一个数据框,如下所示 我们称之为DF1

df1

我需要生成一个新的数据框,如下所示

让我们称之为df2

DF2

df2只是重复除了df1

中第一列A之外的其他列

df1 [1,1]是1.所以,我需要在df2中生成三行,这些行不包含1,相应地保持其他列的值不变。

类似地,df1 [2,1]是2.因此,我需要在df2中的三行不包括2而在1到4之间的其他三行保持其他列的值相应地保持不变。

请帮我这样做

提前致谢

1 个答案:

答案 0 :(得分:2)

这是基于R的想法,

d2 <- df[rep(rownames(df), each = 3), ]
d2$A <- unlist(lapply(df$A, function(i) setdiff(seq(4), i)))

给出,

    A B C D
1   2 2 3 4
1.1 3 2 3 4
1.2 4 2 3 4
2   1 1 2 3
2.1 3 1 2 3
2.2 4 1 2 3
3   1 3 4 2
3.1 3 3 4 2
3.2 4 3 4 2
4   1 2 3 4
4.1 2 2 3 4
4.2 3 2 3 4

注意:您可以使用rownames(d2) <- NULL删除rownames