保留r中数据帧中的变量值

时间:2014-01-31 17:34:36

标签: r retain

我在R

中有一个dataframe
ID subgroup First.ID Var
103  17     TRUE     abc
103  17     FALSE    xyz
103  17     FALSE    def
103  17     FALSE    pqr
106  16     TRUE     abc
106  16     FALSE    pqr

创建First.ID以标识组中的第一个元素(ID)。 我想创建一个新的变量,它应该在一个by组中保留它的值。这里,我将使用的组是ID变量。 我的新dataframe应该是这样的

ID subgroup First.ID Var Condition
103  17     TRUE     abc abc
103  17     FALSE    xyz abc or xyz
103  17     FALSE    def abc or xyz or def
103  17     FALSE    pqr abc or xyz or def or pqr
106  16     TRUE     abc abc
106  16     FALSE    pqr abc or pqr

1 个答案:

答案 0 :(得分:3)

DF <- read.table(text="ID subgroup First.ID Var
103  17     TRUE     abc
103  17     FALSE    xyz
103  17     FALSE    def
103  17     FALSE    pqr
106  16     TRUE     abc
106  16     FALSE    pqr", header=TRUE)

library(plyr)
cumpaste <- function(x, sep) {
  sapply(seq_along(x), function(y,z,sep) paste(z[1:y], 
          collapse=sep), z=x, sep=sep)
}

ddply(DF, .(ID), transform, condition=cumpaste(Var, " or "))

#    ID subgroup First.ID Var                condition
# 1 103       17     TRUE abc                      abc
# 2 103       17    FALSE xyz               abc or xyz
# 3 103       17    FALSE def        abc or xyz or def
# 4 103       17    FALSE pqr abc or xyz or def or pqr
# 5 106       16     TRUE abc                      abc
# 6 106       16    FALSE pqr               abc or pqr