Создать вектор на основе условия столбца во фрейме данных в R - PullRequest
1 голос
/ 02 апреля 2020

У меня есть простой фрейм данных в следующем формате:

df <- data.frame(var1 = c(1, 1, 1, 2, 2, 2),
                  var2 = c(144, 156, 160, 123, 138, 170))

Я хочу создать вектор (просто назовите его ve c) с индексами уникальных значений var1 в моем фрейме данных и затем по этому индексу присваивают значения в var2, которые соответствуют его значению в var1. Итак, var1 - это id или переменная группировки в моих данных. Желаемый результат будет выглядеть следующим образом:

vec
"144, 156, 160", "123, 138, 170"
vec[1] 
"144, 156, 160"
vec[2]"123, 138, 170"

1 Ответ

2 голосов
/ 02 апреля 2020

Мы можем использовать split, чтобы создать list из vector, а затем paste это вместе

var1 <- unname(sapply(split(df$var2, df$var1), toString))
var1[1]
#[1] "144, 156, 160"
var1[2]
#[1] "123, 138, 170"

Или, если нам понадобится решение al oop

un1 <- unique(df$var1)
out <- character(length(un1))

for(i in seq_along(un1)) out[i] <- toString(df$var2[df$var1 == un1[i]])

out
#[1] "144, 156, 160" "123, 138, 170"
...