df=
ID Order_nr C D
1 1 N87.0 N87.0
2 1 N87.1 N87.1
3 1 N87.1 N87.1
4 1 N87.1 N87.1
4 2 N87.0 N87.1
5 1 D06 D06
6 1 N87.0 N87.0
7 1 N87.1 N87.1
7 2 N87.1 N87.1
7 3 N87.0 N87.1
7 4 N87.0 N87.1
7 5 N87.0 N87.1
7 6 N87.0 N87.1
8 1 N87.0 N87.0
为了更好的图片:
我必须创建列 D,它是使用 Order_nr 和 C 为每个 ID 唯一设置的。我做了类似这样的事情df$D = df$C[Order_nr == 1]
ID 1 只出现一次,所以没有太多可供选择,但 ID 7 出现 6 次,我需要将 N87.1 添加到所有这 6 行,因为 df$C[Order_nr == 1] => N87.1
我试图以多种方式做到这一点,但都失败了。到目前为止,我已经设法使用双 for 循环做一些接近它的事情,但这并不完美或需要。
我现在设置的示例:
foo <- function(df) {
C = df$C[df$Order_nr == 1] }
ddply( df, .(ID),mutate, foo)
但这似乎没有任何作用。有人可以指出我正确的方向。
旁注。是否有一种特定的方法来引用 ddply 创建的不同子集,然后将它们组合到 1 个 data.frame 中。假设有 10 个不同的 ID,每个 ID 有 5 到 10 个。如果我使用 ddply(df,.(ID),...),那么我如何引用只有 ID = 1、2、...的子集
EDIT Metrics 代码通过应用 head() 函数实现了魔力
ddply(df1,.(ID),transform,E=head(C,1))