2014-01-31 2 views
0

У меня в 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 

в dataframe First.ID создан, чтобы определить первый элемент в группе (ID). Я хочу создать новую переменную, которая должна сохранить свое значение в группе. Здесь по группе i будет использоваться переменная 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

Этот выход не выглядит полезным на всех. Какова цель его создания? – Roland

+0

Переменная Var фактически имеет такие условия, как (product_number = 1 и product_group = "A"). У каждого экземпляра есть условие. Я хочу обобщить условия, разделенные «или». Затем будет использовано последнее условие. – Sid

ответ

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 
+0

Я новичок в языке R. Можете ли вы заставить меня понять, какова будет ценность «y» в функции пасты. Поскольку мы передаем только «x» и «sep» при вызове функции cumpaste. – Sid

+0

Значения 'y' - это значения' seq_along (x) ', переданные функции в цикле. – Roland

Смежные вопросы