我在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
答案 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